2013-09-03 2 views
0

패키지 폴더 내부에서 스칼라 파일을 컴파일하려고합니다. 그래서 내가 세 개의 파일, Patient.scala, PatientMonitor.scalaVitalSigns.scala을 가지고, 그들은 모두 다음 경로 여기 gasguru/patient/명령 줄에서 패키지 폴더 내의 스칼라 파일 컴파일

에있는 내 파일 VitalSigns.scala

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

내가 다음 줄에 컴파일 : scalac -d ../.. VitalSigns.scalaVitalSigns.class 파일이 현재 내가있는 디렉토리와 동일한 디렉토리에 생성됩니다.

이제 컴파일하려고하면 Patient.scala ntains이 :

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

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

을 나는 시도하고이 다음 라인을 컴파일하는 경우 : 나는 VitalSigns.class이 같은 디렉토리 안에있는 경우

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 

가 왜이 오류가 무엇입니까 다음과 같은 오류를 얻을 scalac -d ../.. Patient.scala을 파일을 컴파일하는 위치는? 가져 오기가 충분하지 않아야합니까?

감사합니다.

편집 : 그것은 클래스 파일을 검색하려고 있도록

[email protected]:~/GasGuru/gasguru/patient$ ls 
exceptions   Patient.scala  VitalSigns.scala 
PatientMonitor.scala VitalSigns.class 

답변

2

당신은 매개 변수로 VitalSigns.scala의 소스 파일을 전달하지 않습니다. 패키지 x.y에있는 클래스의 클래스 파일은 x/y 디렉토리 아래에 있습니다. 즉, 사용자가 현재 디렉토리에 존재하지 않는 gasguru/patient/VitalSigns.class을 찾으려고합니다.

-classpath ../..을 추가하면 파일을 찾아야합니다.

+0

그래서 혼란 스럽네요. 왜 VitalSigns.scala를 컴파일하지 않으면 gasguru.patient 패키지에 넣으시겠습니까? 그 선언이 말하는 것은 아닌가요? 나는 또한 OP에 파일 구조를 추가했다. –

+0

또한 -classpath ../ ..를 추가하려고 시도했는데 다음 오류가 발생했습니다. '오류 : VitalSigns를로드하는 동안 오류가 발생했습니다. 클래스 파일'./VitalSigns.class '에 VitalSigns 클래스가 잘못 포함되어 있습니다. Patient.scala : 2 : 경고 : 가져온 'VitalSigns'는 개체 VitalSigns의 정의에 의해 영구적으로 숨겨 짐 import gasguru.patient.VitalSigns; ^ 하나의 경고가 발생했습니다 오류가 하나 있습니다. ' –

+0

@ Lilluda5 클래스를 올바른 위치에 두지 만,'-d ../ .. '매개 변수를 사용하면 클래스의 기본 디렉토리가 '../ ..', 그것은 당신이있는 같은 디렉토리에서 끝나는 이유입니다. 그러나'-d'는 물건을 어디에 넣어야하는지 말하고 어디서 찾을 수 있는지 말하지 않습니다. –

관련 문제