2016-02-28 60 views
0

我是一個沒有java背景的scala初學者。我不瞭解導入系統。 我有我的應用程序,在這裏我使用進口導入類:錯誤:未找到:對象控制器

import Array._ 
import List._ 
import Controller.api 
object scalaStart{ 
    def main(args: Array[String]){ 
      var apiCtrl = new api() 
      apiCtrl.getById(1) 
      println(apiCtrl.title) 
    } 

} 

這是類:

package Controller 
class api { 
    var id:Int 
    var title:String 
    var description:String 
    def getById(id:Int){ 
    if(id = 1){ 
     this.id   = 1 
     this.title  = s"Title Nummer ${this.id}" 
     this.description = s"Description Nummer ${this.id}" 
    }else{ 
     this.id   = 1 
     this.title  = s"Artikel mit der ID: ${this.id} existiert nicht." 
     this.description = s"Kein Eintrag mit der ID: ${this.id}" 
    } 
    } 
} 

我還檢查僅進口API和進口控制器和通配符controller._ controller.api._ 。

+0

什麼是您的目錄佈局?你在用sbt嗎? – Daenyth

+0

不,我不使用sbt。 GettingStart/src/controller/api.scala和GettingStart/src/GettingStarted/GettingStarted.scala。它是用Netbeans和scala Plugin自動構建的。 –

+0

對於區分大小寫的文件系統,大小寫在包名中可能很重要。成語是軟件包是小寫的,類是從Upper開始的。 –

回答

1

Philipp,你的代碼實際上不能編譯。 在行if(id=1){它應該是if(id==1)。 嘗試糾正這一點並重建您的項目。 你會發現,編譯器會給你另一個錯誤:

Error:(5, 7) class api needs to be abstract, since: it has 3 unimplemented members. /** As seen from class api, the missing signatures are as follows. * For convenience, these are usable as stub implementations. */ def description_=(x$1: String): Unit = ??? def id_=(x$1: Int): Unit = ??? def title_=(x$1: String): Unit = ??? class api { ^

這是因爲在Scala中你不能離開變量聲明爲抽象的,你可以用Java做的。而不是var id:Int你需要做些什麼var id:Int = 0和其他聲明的變量相同。

+0

謝謝。大愚蠢的失敗。我初始化了字符串:var id:Int = 0 var title:String =「」 var description:String =「」'然後我編譯了控制器包,它工作正常。但是我不能像這樣使用字符串插值:'this.title = s「Title Nummer {this.id}」' –

+0

不客氣。 對我來說,在我解決了所有這些問題之後,當我跑步時,它給了我: 'Title Nummer 1' 對你而言,它是一樣的嗎? –

+0

我收到錯誤:';'預期但發現字符串文字。 this.title = s「Title Nummer $ {this.id}」我有斯卡拉版本2.9 –