2017-01-13 5 views
2

다음 클래스를 사용하여 compile.bat 파일을 작성하려고합니다. HumanTest (main method), Man, Food. 다음은 3 개의 클래스에 대한 코드입니다. 이 상황에서는 Food가 이미 컴파일되어 있고 .java 파일이 없습니다.bat 파일에 -classpath를 설정하십시오.

package human.man; 

public class Man { 

    private String name; 
    private Food f; 

    public Man(String name, Food f) { 
     this.name = name; 
     this.f = f; 
    } 
} 

public class Food { 
    private String foodName; 

    public Food(String name) { 
     foodName = name; 
    } 
} 

import human.man.*; 
public class HumanTest { 
    public static void main (String[] args) { 
     Food f = new Food("ckt"); 
     Man m = new Man("joe", f); 
    } 
} 

는 compile.bat에서, 나는 다음과 같은 코드 javac -cp classes;src HumanTest.java 을 실행하지만 식품 클래스를 찾을 수 없다는 오류가 발생합니다. 나는 이것이 Food.class에 대한 classpath를 이미 설정 했음에도 불구하고 이것이 왜 그렇게 궁금하다. 파일에 대한 링크는 다음과 같습니다. https://www.dropbox.com/s/2wussnm55tbnh3t/Question.zip?dl=0

EDIT : 아래 그림은 내가 잘못 그렸는지 알려주는 것입니다!

--Question 
    |--compile.bat 
    |--HumanTest.java 
    |--classes 
    |--Food.class 
    |--src 
    |--human 
     |--man 
      |--Man.java 
+0

사용중인 디렉토리와'.java' 및'.class' 파일의 위치를 ​​도표로 나타낼 수 있습니까? –

+0

항아리에 넣으시겠습니까? 누가 .class 파일을 배포하는지. – ossobuko

답변

0

문제는 배치 파일과 관련이 없으며 순전히 클래스 조직에 있습니다. 명명 된 패키지에서 기본 패키지를 가져올 수 없으며 명명 된 패키지에있는 클래스의 기본 패키지에있는 클래스를 사용할 수 없습니다.

클래스 human.man.Man에서 기본 패키지에있는 Food 클래스를 사용하려고합니다. 음식을 명명 된 패키지로 옮겨보십시오.

+0

편집 할 Food.java 파일이 없다면이 파일을 컴파일 할 수 없다는 뜻입니까? – timothyjoseph

+0

클래스가 기본 네임 스페이스에있는 경우에만 컴파일 할 수 있습니다. 따라서 기본 네임 스페이스를 사용하지 않는 것이 좋습니다. Food.class를 작성한 사람은 클래스를 사용하려면 클래스를 기본 네임 스페이스에 넣어야합니다. 어느 쪽이 좋지 않은가. –