cie*_*bor 0 directory import scala compilation subdirectory
我有这样的dir层次结构:
src
src/Model
src/View
src/Controller
Run Code Online (Sandbox Code Playgroud)
现在我想构建我的应用程序.如何从模型视图和控制器导入/包含类,因为编译器无法看到它们?
//编辑
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
}
Run Code Online (Sandbox Code Playgroud)
SRC /型号/ Model.scala
class Model {
// some code
}
Run Code Online (Sandbox Code Playgroud)
SRC /查看/ View.scala
import swing._
class View(model:Model) extends MainFrame {
// some code
}
Run Code Online (Sandbox Code Playgroud)
SRC /控制器/ Controller.scala
class Controller(model:Model, view:View) {
// some code
}
Run Code Online (Sandbox Code Playgroud)
这是一个构建脚本
#!/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
Run Code Online (Sandbox Code Playgroud)
当所有文件都在src目录中时,一切正常.
使用成熟的构建工具,而不是乱搞手动shell脚本.SBT必须是你最好的选择.
在每个源文件的顶部,指定它应该属于哪个包.建议将所有内容转储到默认包中是不明智的 - 这是未来命名空间冲突的保证配方.
确保每个文件也是import依赖于它的类.