0

我正在尝试从它们的包文件夹中编译 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
4

1 回答 1

2

您没有将源文件VitalSigns.scala作为参数传递,因此它将尝试搜索类文件。包中某个类的classfile在x.y目录下x/y,表示它正在尝试查找gasguru/patient/VitalSigns.class,在你所在的当前目录中不存在。

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

于 2013-09-03T23:21:01.740 回答