2014-11-18 4 views
1

Java에 익숙하지 않아 jar 파일로 패키지 된 Java 코드를 실행하려고합니다.Java CLASSPATH 변수 지정

set CLASSPATH="D:\jarFolder" 

을 그리고 그 폴더에 test.jar 파일이있다 :

Windows 명령 행에서

,이 같은 내 항아리 폴더에 클래스 경로를 지정합니다. 나는이

java -jar test.jar 

을 실행할 때 여전히이 오류와 함께 실패

Unable to access jarfile test.jar 

나는 전체 경로를 지정하여 test.jar를 실행할 수 있습니다. 하지만 CLASSPATH가 작동하지 않는 이유를 알고 싶습니다. 내 이해, 자바 런타임 어디에 jar 파일을 찾을 알려줍니다.

+1

두 답변 모두 100 % 정확하므로 "유용하지 않습니다"라는 이유를 알 수 없습니다. – jdv

+0

나는 그들을 표시하지 않았다. 다른 사람이 그랬어. – smwikipedia

답변

0

Jarfiles은 명시 적으로 클래스 경로에 있어야합니다. jarfile에 대한 classpath 디렉토리를 지정하는 것만으로는 충분하지 않습니다.

는 Java 명령 행에 related Oracle docs를 참조하십시오 : 당신은 단지 당신의 진입 점의 메인 클래스의 이름을 알고있는 경우

When you use this option, the JAR file is the source of all user classes, and other user class path settings are ignored.

+0

나는이'set CLASSPATH = "D : \ jarFolder \ test.jar"'를 시도했다.'java -jar test.jar'를 사용하는 경우에도 여전히 같은 오류가 발생하지만,'java ab ClassName'. 이유를 모르겠다 ... – smwikipedia

+0

시작 클래스를 지정 하시겠습니까? 클래스 패스에 jar 파일을 명시 적으로 설정하는 것이 지원되며 매니페스트의 기본 클래스가 아닌 클래스를 호출하는 유일한 방법입니다. – jdv

+0

예, 시작 클래스를 지정하고 있습니다. 풀 패스를 만들기 위해 CLASSPATH 폴더와 test.jar 파일 이름을 결합 할 수없는 이유가 혼란 스럽습니다. – smwikipedia

0

시도가

java -jar D:\jarFolder\test.jar 

을 사용합니다. 당신은

set CLASSPATH="D:\jarFolder" 
java yourpackage.yourEntryPoint 

당신은 jar 파일을 추출하는 압축 프로그램을 사용하고 file entry point section of manifest.mf file을 읽는 당신의 jar 파일의 사용자 진입 점을 배울 수 있습니다 사용할 수 있습니다.

-jar 옵션을 사용하면 어떤 jar를 지정해야합니다. 이것을 이렇게 생각하십시오. jar java를 실행해야하는 jar 이름을 지정하지 않으면? 당신은 10,20이 당신의 클래스 패스에 100 병있을 수 있습니다.

하지만 클래스 이름을 지정하면 java가 jar를 검색하고 올바른 것을 실행합니다.

+0

''CLASSPATH = "D : \ jarFolder \ test.jar"로 설정했는데'java -jar test.jar'를 사용하면 여전히 같은 오류가 발생합니다. 이 패키지 이름은'java abClassName'과 같습니다. 이유를 모르겠다 ... – smwikipedia

+0

내 질문은 자바 런타임이 항아리 풀 경로를 어떻게 파악합니까? – smwikipedia

+0

java에 대한 인수가 시작 클래스이기 때문에 매니페스트 파일에있는대로 제공해야합니다. java -jar ....는 클래스 경로에 jar 파일을 추가하고 jar의 매니페스트 파일에서 식별 된 완전한 시작 클래스에서 java를 호출하는 편리한 방법 일뿐입니다. – jdv