2013-07-30 2 views
4

명령 줄에서 컴파일 할 때 -classpath 옵션이 어떻게 작동하는지 이해하려고합니다.명령 줄에서 컴파일

나는 mydirectory의 부모로부터 시도 :

javac의 -cp mydirectory/하위 디렉터리 Hello.java

그러나 컴파일러는 말한다 :

javac의 : 어떤 소스 파일

어떻게합니까 -cp (-classpath) 작동 ?? 내가 도대체 ​​뭘 잘못하고있는 겁니까? 내가 subdir 디렉토리에서 그것을 만들 경우

:

javac의의 Hello.java

는 제대로 컴파일합니다.

javac subdir/Hello.java 

이 컴파일하는 데 필요한 것 : 상위 폴더에있는 경우 컴파일

+0

있습니다. 무엇이 잘못되었는지를 알기 위해 무엇을하고 있는지에 대해 추측하거나 추측해야만하는 것들이 너무 많습니다. 또한 Hello 클래스의 패키지 또는 사용자가 가지고 있지 않은 명제를 알아야합니다. – arcy

답변

0

파일은, 예를 들어 직접

정의해야합니다.

클래스 경로를 사용하면 위와 같이 정의 된 항목을 컴파일하는 데 필요한 .class 파일을 찾을 수 있습니다.

예를 들어, 코드에서 "Birds"클래스에 대한 참조가 있었고 해당 클래스가 현재 폴더의 "animals.jar"라는 항아리에 있었는데이 폴더는 Java 파일의 부모였습니다. 당신이 필요합니다 :

javac -cp animals.jar subdir/Hello.java 
+0

OP가'Hello.java'에 대해 선언 한 패키지에 따라 다릅니다. –

+0

@EricJablow True. package 문에 파일 배치가 반영되지 않으면 컴파일 오류가 발생합니다. –

1
javac TestProgram1.java TestProgram2.java TestProgram3.java 

당신은이 같은 폴더에있는 모든 파일을 컴파일하기 위해 와일드 카드를 사용할 수 있습니다

javac *.java 

당신이에서 많은 파일을 컴파일해야하는 경우 같은 시간이지만 aw를 사용하고 싶지 않다. (많은 수의 파일을 컴파일하고 폴더의 모든 파일을 컴파일하지 않으려는 경우), 컴파일 할 파일을 나열하는 인수 파일을 만들 수 있습니다. 인수 파일에서 공백이나 줄 바꿈을 사용하여 원하는만큼 많은 파일 이름을 입력 할 수 있습니다. javac의 명령 행에서 인수 파일의 이름 뒤에

TestProgram1.java 
TestProgram2.java 
TestProgram3.java 

당신은 @ 문자를 사용하여이 파일에있는 모든 프로그램을 컴파일 할 수처럼, 다음은 세 개의 파일을 나열 TestPrograms 컴파일라는 이름의 인수 파일입니다 이 :

javac @TestPrograms 

-cp 및 -classpath

은 사용자 클래스 파일을 찾을 위치를 지정합니다. 프로그램이 별도의 폴더에 저장 한 클래스 파일을 사용하는 경우이 옵션을 사용하십시오.

0
javac XXX.java 

명령 -classpath 플래그로 자바 명령을 볼 수 있습니다 자바 클래스를 컴파일하는 데 사용됩니다. 클래스 파일이 어디

우리가 main() 함수로 시작하려면 여기를

java XXX.class 

를 사용하여 자바 프로그램을 실행, JVM은 알아야한다. 그래서 우리는 classpath 플래그를 사용하는 클래스의 경로를 지정합니다.

Classpath 링크 자세한 내용을 보려면 링크를 클릭하십시오.

자바 프로그램을들이받은 몇 가지 예를 들어 내가 현재 디렉토리에있는 파일과 현재 디렉토리의 값을 보여 LS 및 PWD를 사용하여 명령 윈도우의 스크린 샷을 제안

java -classpath .;yourJarFile.jar your.MainClass 

java -classpath path_till_classfile/HelloWorld 
관련 문제