2009-06-03 3 views
72

Java (Java)를 사용하여 명령 줄 (Windows)에서 클래스 (main 메서드)를 호출하려고합니다.
클래스는 다른 클래스 (다른 jar)를 가져옵니다.Java : 명령 줄에서 jar 파일을 가져 오는 방법

내 메인 프로그램에서 가져 오는 클래스에서 항상 "클래스를 찾을 수 없습니다. 예외"가 발생합니다.

는 여기에 내가 시도 내용은 다음과 같습니다

  • 는 CLASSPATH의 ENV를 추가합니다. 명령 줄에서 "java -jar myjar.jar"를 호출 할 때 (작동하지 않는) 참조 LIB 상주

  • 나는 이러한 모든 다른 매개 변수로 시도 경로와 VAR : "-classpath lib/", "-classpath ./lib/", "-classpath lib", "-cp lib/*" "-cp lib/\*는", "-classpath lib/referenced-class.jar는", "-classpath ./lib/referenced-class.jar는"...

  • 가 내 메인 클래스가있는 내 항아리 안에 모든 참조 된 단지를 포장하려

  • 과 함께 (참조 된 항아리가있는 곳 lib 디렉토리입니다) 그 모든 것, 나도 노력했다. 의 -classpath 인수 is ignoredClass-path referenced-jar.jar하고 java -jar와 jar 파일을 실행하는 경우 또한

답변

116

;를 사용해야합니다 당신은 -jar 명령 행 인수없이 실행할 수

java -cp "your_jar.jar:lib/referenced_jar.jar" com.your.main.Main 

시도 실행하고자하는 경우 :

java -classpath .;myjar.jar;lib/referenced-class.jar my.package.MainClass 

Linux를 사용하는 경우 ";"대신 ":"을 사용해야합니다. classpath에서.

+0

woohoo, 고마워요! 고마워요 :) –

+0

나는 이것을 알아 내기 위해 영원히 수색했습니다! – chotchki

+9

단지 명확하게 말하면, 항아리는 명시 적으로 클래스 패스에 있어야합니다./lib 디렉토리를 지정하는 것은 비효율적입니다. – cmcginty

59

Class-path lib/referenced-jar.jar을 시도 : 함께 매니페스트 파일 내부의 클래스를 지정합니다. 당신과 같이 당신의 항아리의 매니페스트 파일의 클래스 경로를 설정해야합니다

Class-Path: jar1-name jar2-name directory-name/jar3-name

자바 튜토리얼을 참조하십시오 Adding Classes to the JAR File's Classpath.

편집 : 이미 매니페스트의 클래스 경로 설정을 시도했지만 올바른 구문을 사용 했습니까? ""을 건너 뛰면 "Class-Path"이 표시되는 것처럼 작동하지 않습니다.

+0

그래, 나도 그걸 시도 했어. ( –

+0

내 편집을 보았습니까? –

+0

네, "시도했다": 또한 ... 왜 매니페스트를 사용하여 지정했는지 모르겠습니다. 그것들은 전혀 일하지 않았다.나는 동료들에게 물었고 그들과 함께 모든 것을 다시 확인했다. –

3

이클립스에서 "Runnable jar"로 내보내기를 시도 할 수 있습니다. 나는 또한 "항아리"로 내보낼 때 문제가 있지만 "Runnable jar"로 내보낼 때 문제가 생기지 않습니다.

+0

내보내기 창에 "Runnable jar"옵션이 표시되지 않습니다. JAR 파일 ( –

+0

) 이클립스 버전을 사용하고 있습니까? 가니메데에 있습니다. 여기 screrenshot : http :// /bufka.ath.cx/dslr/Eclipse-Export.png 하지만 기본 설정인지 여부는 알 수 없습니다. – cupakob

13

당신이 창에있는 경우 메인 클래스의 이름을 알고 일어나는 경우에, 당신은 대신 :