2010-06-16 4 views
7

명령 줄에서 컴파일하고 실행하려고하는 단일 .java (driver.java) 파일이 있습니다. EXT.jar이라는 외부 라이브러리를 사용하며 그 구조는 수십 개의 클래스가있는 EXT라는 폴더입니다. .jar 라이브러리의 Java 명령 줄 문제

그래서 나는 실행

javac -cp EXT.jar driver.java 

이 클래스는 잘 컴파일합니다.

은 그때 실행하면

java -cp EXT.jar driver 

가 나는 java.lang.NoClassDefFoundError를 얻을.

이상하게도 JAR 파일을 압축하면 (루트 디렉토리에 EXT라는 폴더가 생겼습니다), 마지막 명령은 잘 작동합니다 !! 드라이버가 실행됩니다!

driver.class가 실제 EXT 폴더 대신 EXT.jar/EXT/*class에서 필요 클래스 파일을 찾을 수있는 방법이 있습니까?

감사합니다.

답변

18

클래스를 로컬 디렉토리로 컴파일 중입니다. 따라서 실행할 때 클래스 경로에 현재 디렉토리를 포함시켜야합니다. 예를 들면 :

java -cp .;EXT.jar driver 

또는 리눅스에서

: 당신이 지금이 방법으로

java -cp .:EXT.jar driver 

, 당신은 클래스 패스는 CLASSPATH 환경에서 무엇이든 함께 EXT.jar (인 말을하는지 변수) 및 그 밖의 것 (driver.class가있는 현재 디렉토리가 제외 된 이유)

+0

Perfect! 감사! – Monster

+0

할거야. 나는 분명히 대답을 받아들이 기 위해 15 분을 기다릴 필요가있다. – Monster

+0

고맙다 Matt, 당신의 대답은 하나의 항아리의 경우에 나를 위해 효과가 있었지만 지금은 2 다른 항아리를 사용해야한다. 두 jar는 내 프로젝트에서 "libs"라는 폴더에 있습니다. 그러나 작동시키지 못했습니다. 나는 우분투를 사용하고있다. plz help – AndroidGuy