2011-05-15 92 views
0

我有目錄層次結構像這樣:如何從Scala中的其他目錄導入文件?

src 
src/Model 
src/View 
src/Controller 

現在我想建立我的申請。如何從模型視圖和控制器導入/包含類,因爲編譯器無法看到它們?

//編輯

的src/App.scala

import swing._ 

object App extends Application { 

    val model  = new Model 
    val view  = new View(model) 
    val controller = new Controller(model, view) 

    view.visible = true 

} 

的src /型號/ Model.scala

class Model { 
    // some code 
} 

的src /查看/ View.scala

import swing._ 

class View(model:Model) extends MainFrame { 
    // some code 
} 

src/Controller/Controller.scala

class Controller(model:Model, view:View) { 
    // some code 
} 

這裏是一個構建腳本時,所有文件都放在src目錄

#!/bin/bash 

source ${0%/*}/config.inc.sh 

if [ ! -d $CLASSES_PATH ]; then 
    notice "Creating classes directory..." 
    mkdir $CLASSES_PATH 
fi 

notice "Building VirtualCut..." 
scalac $SOURCE_PATH/Model/*.scala -d $CLASSES_PATH || error "Build failed (Model)." 
scalac $SOURCE_PATH/View/*.scala -d $CLASSES_PATH || error "Build failed (View)." 
scalac $SOURCE_PATH/Controller/*.scala -d $CLASSES_PATH || error "Build failed (Controller)." 
scalac $SOURCE_PATH/*.scala -d $CLASSES_PATH || error "Build failed." 
success "Building complete." 

exit 0 

,一切工作正常。

+1

-1不足。請顯示一些文件的內容以及你如何編譯這個文件的細節。 – retronym 2011-05-15 14:20:40

回答

5
  1. 使用長大的構建工具,而不是亂搞手卷shell腳本。 SBT在這裏是你最好的選擇。

  2. 在每個源文件的頂部,指定它應該屬於哪個包。不建議將所有內容都轉儲到默認包中 - 這是未來命名空間衝突的保證配方。

  3. 確保每個文件也有import s它依賴的類。

3

由於您還沒有報告出現了什麼錯誤,我們只能猜測。然而,基本的錯誤似乎只是你編譯的代碼在不同的步驟中相互引用。解決方案很簡單:不要這樣做。這樣做:

scalac $SOURCE_PATH/Model/*.scala $SOURCE_PATH/View/*.scala $SOURCE_PATH/Controller/*.scala $SOURCE_PATH/*.scala -d $CLASSES_PATH || error "Build failed." 
success "Building complete." 

但是,如果你確信沒有交叉的依賴關係,你需要通過CLASSES_PATH的類路徑:

詳細
scalac $SOURCE_PATH/Model/*.scala-d $CLASSES_PATH || error "Build failed (Model)." 
scalac $SOURCE_PATH/View/*.scala -cp $CLASSES_PATH -d $CLASSES_PATH || error "Build failed (View)." 
scalac $SOURCE_PATH/Controller/*.scala -cp $CLASSES_PATH -d $CLASSES_PATH || error "Build failed (Controller)." 
scalac $SOURCE_PATH/*.scala -cp $CLASSES_PATH -d $CLASSES_PATH || error "Build failed." 
相關問題