我正在尝试从INSIDE他们的包文件夹中编译scala文件。
我有三个文件Patient.scala
,PatientMonitor.scala
和VitalSigns.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
答案 0 :(得分:2)
您没有将VitalSigns.scala
的源文件作为参数传递,因此它将尝试搜索类文件。包x.y
中的类的类文件位于目录x/y
下,这意味着它正在尝试查找gasguru/patient/VitalSigns.class
,这在您当前的目录中不存在。
如果您添加-classpath ../..
,则应找到该文件。