2012-09-04 3 views
2

많은 내용을 읽었지만 아직 해결책을 찾을 수 없습니다.외부 라이브러리에 의존하는 터미널에서 java를 실행하십시오.

나는 lwjgl을 사용하고 있는데, 실행하려면 2 개의 병과 기본 라이브러리가 필요합니다. lwjgl.jar, lwjgl_util.jar 및 기본 라이브러리.

java - Djava.library.path="libs/natives/" -cp libs/jars/lwjgl.jar:libs/jars/lwjgl_util.jar DisplayTest.class 

하지만 난 노력 모든면에서, 내가 얻을 : 어쨌든, 나는 지금과 같은 명령으로 노력하고있어 내가 생각할 수있는 모든 방법이 시도했습니다

Exception in thread "main" java.lang.NoClassDefFoundError: DisplayTest/class 
Caused by: java.lang.ClassNotFoundException: DisplayTest.class 
at java.net.URLClassLoader$1.run(URLClassLoader.java:217) 
at java.security.AccessController.doPrivileged(Native Method) 
at java.net.URLClassLoader.findClass(URLClassLoader.java:205) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:321) 
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:266) 
Could not find the main class: DisplayTest.class. Program will exit 

오, 내가 리눅스 터미널에서 일하고 있다고 언급 할 가치가 있습니다. 또한,이 일식에서 완벽하게 실행되도록이 사실을 이해할 수 없으므로 여기에 무엇이 있는지 이해할 수 있습니다.

+0

'Djava.library.path ="libs/natives/"'?? 앞에 공백이 있습니까? '-Djava.library.path = "libs/natives /"'이어야하고, 시스템 프로퍼티를 정의하기 위해'-D' 구조체가 사용됩니다. –

+0

예, 미안 해요, -D로되어 있었는데 쓰고있을 때 약간의 문제가있었습니다. 스레드 : – user1295313

답변

4

는 첫째로, 당신은 단지 자바 클래스 이름을 전달하는 데 필요한 사용보고 단지 java 명령을 입력

java -Djava.library.path="libs/natives/" 
    -cp libs/jars/lwjgl.jar:libs/jars/lwjgl_util.jar DisplayTest 

(읽기 쉽도록 줄 바꿈을)

나는 다음을 시도합니다 :

1)에서와 같이 CLASSPATH에 환경 변수를 사용하여

CLASSPATH=.:/path/to/lwjgl/lwjgl.jar:/path/to/lwjgl/lwjgl_util.jar 
    export CLASSPATH 

클래스 경로의 맨 처음에 점 (.)이 표시됩니다. 이 작동하는 경우

java -Djava.library.path="libs/natives" DisplayTest 

쉘 스크립트에 위의 명령을 추가 :

2) 자바 응용 프로그램을 실행합니다. 행운을 빕니다!

+0

"DisplayTest/class"의 '/'가 단서임을 여기에 추가하고 싶습니다. 클래스 이름에는 '/'기호를 사용할 수 없습니다! –

+0

우선, 답장을 보내 주셔서 감사합니다. 그러나 그것은 저에게 효과적이었습니다. 나는 여전히 메인 클래스를 찾을 수 없다 : DisplayTest. 심지어 코드를 바로 복사하려고 했는데도 여전히 작동하지 않았다. ( – user1295313

+0

죄송합니다. 분명히이 오류는 내가 제공 한 오류가 수정되었지만 .class 항목이 수정 된 후에 표시되는 것이 너무 좋아서 잠시 동안 변경 사항을 알지 못했습니다. – user1295313

0

java 명령을 트리거 할 때 -cp 또는 -classpath를 사용하십시오.

+0

나는 -cp를 사용 했습니까? :) – user1295313

1

예 : ".class"를 삭제 해보십시오.

자바 = "libs와/원주민 /"-cp libs와/항아리/lwjgl.jar -Djava.library.path : libs와/항아리/DisplayTest.class

lwjgl_util.jar

이 될 것입니다 :

자바 -Djava.library.path libs와 -cp/병/lwjgl.jar = "/ libs와/네이티브"libs와/병/

DisplayTest lwjgl_util.jar은 "을 .class"을 첨가함으로써 , 너는 명령 그쪽으로 말하고있어. "DisplayTest"라는 디렉토리에 "class"라는 클래스가 있는데, 이것은 당신이 성취하려는 것이 아닙니다. 이것은 다음 줄에 표시됩니다.

Exception in thread "main" java.lang.NoClassDefFoundError: DisplayTest/class 
+0

답장을 보내 주셔서 감사합니다. 그러나 또한 나에게 도움이되지 않았지만 여전히 클래스를 찾지 못했습니다. ( – user1295313

+0

@ user1295313 괜찮습니다. 출력 내용은 무엇입니까? –

+0

@ user1295313 libs/jars/lwjgl.jar : libs/jars/lwjgl_util.jar DisplayTest –

0

나는 비슷한 오류가 발생합니다.

런타임시 classpath에 필요한 라이브러리와 함께 작업 디렉토리 (자신의 클래스가있는 곳)를 포함 시키십시오.컴파일하기 : 기계 런타임 중에 .class 파일을 찾을 수없는 경우

NoCLassDefFoundError

1 단계는 (그들이 컴파일 된 경우에도 있지만 런타임시 컴파일하는 동안 오류가 제공하지 않습니다 즉,) 발생 javac -classpath "path/to/lib1 : path/to/lib2"yourfile.java 단계 2 : 실행 java - classpath "경로/to/lib1 : 경로/to/lib2 : path/to/your/currentdirectory/wherethedotclass/filearecreated/"yourfile

관련 문제