从命令行编译其包文件夹中的scala文件

时间:2013-09-03 23:09:39

标签: scala

我正在尝试从INSIDE他们的包文件夹中编译scala文件。 我有三个文件Patient.scalaPatientMonitor.scalaVitalSigns.scala,它们都位于以下路径gasguru/patient/

这是我的档案VitalSigns.scala

// /gasguru/patient/VitalSigns.scala
package gasguru.patient
  class VitalSigns () {
      var heartRate = 0;
  }

我用以下行编译它:scalac -d ../.. VitalSigns.scala 这导致VitalSigns.class文件在我当前所在的目录中创建。

现在,如果我去编译包含此内容的Patient.scala

// /gasguru/patient/Patient.scala
import gasguru.patient.VitalSigns;
package gasguru.patient {

  class Patient ( val firstName:String, val lastName:String) {
    val vitalSigns = new VitalSigns();
  }
}

如果我尝试使用以下行编译它:scalac -d ../.. Patient.scala我收到以下错误

Patient.scala:2: error: VitalSigns is not a member of gasguru.patient
import gasguru.patient.VitalSigns;
       ^
error: error while loading VitalSigns, Missing dependency 'class gasguru.patient.VitalSigns', required by ./VitalSigns.class
Patient.scala:6: error: VitalSigns does not have a constructor
        val vitalSigns = new VitalSigns();  
                                 ^
three errors found

VitalSigns.class位于我编译文件的同一目录内时,为什么会出现此错误?不应该导入它就够了吗?

谢谢!

编辑:

chs@ubuntu:~/GasGuru/gasguru/patient$ ls
exceptions            Patient.scala     VitalSigns.scala
PatientMonitor.scala  VitalSigns.class

1 个答案:

答案 0 :(得分:2)

您没有将VitalSigns.scala的源文件作为参数传递,因此它将尝试搜索类文件。包x.y中的类的类文件位于目录x/y下,这意味着它正在尝试查找gasguru/patient/VitalSigns.class,这在您当前的目录中不存在。

如果您添加-classpath ../..,则应找到该文件。