2014-07-05 3 views
1

Java 응용 프로그램을 작성하고 Linux ec2 서버에서 실행하고 있습니다. 프로그램은 어제 유창하게 실행되었고, 나는 일부 파일 및 패키지를 변경하고 organazied 후 나는 프로그램 실행할 때 나는이 문제를 받고 있어요 :포함 된 jar에 NoClassDefFoundError 받기

내가이 명령을 사용하여을 programm을 실행 해요 :

java -cp . main.Server 

그리고 다음과 같은 오류 얻을 :

Exception in thread "Thread-0" java.lang.NoClassDefFoundError: org/json/JSONObject 
    at main.Group.<init>(Group.java:28) 
    at main.Server.run(Server.java:23) 
Caused by: java.lang.ClassNotFoundException: org.json.JSONObject 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:366) 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:425) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:358) 
    ... 2 more 

나는 변경하기 전에이 같은 programm에 실행되었다

을 bin 폴더에서

0, 명령

java Server 

그리고 programm에 실행되었다. 패키지를 기본 이름에서 main으로 변경했기 때문에 java -cp . main.Server 명령으로 실행해야하지만 위의 오류가 발생합니다.

나는 또한 .bash_profile을 modifing에 노력하고 이것을 추가 :

CLASSPATH=$CLASSPATH:/home/ec2-user/java-json.jar 
export CLASSPATH 

를하지만 도움이되지 않았다. 코드에 오류가 없으며 jar 파일은 이전에 작동 한 이후로 손상되지 않았습니다. 이 문제를 해결하려면 어떻게해야합니까?

답변

1

이 같은 클래스 경로에 jar 파일을 지정합니다 : 클래스 패스가 실제로 제대로

java -cp .:/home/ec2-user/java-json.jar main.Server 

설정되어있는 경우 .bash_profile, 당신은 할 수 : 작동

java -cp .:$CLASSPATH main.Server 
+0

감사합니다! 항아리를 매 실행마다 명령으로 작성하지 않고 포함시키는 방법을 알고 있습니까? 편집 : 네 번째 명령은 훌륭하게 작동합니다. 감사! – itaied

+2

[Maven Assembly Plugin] (http://maven.apache.org/plugins/maven-assembly-plugin/)과 같은 것을 사용하여 실행 파일 [모든 종속성을 포함하는 JAR 파일] (http : // maven .apache.org/plugins/maven-assembly-plugin/descriptor-refs.html # jar-with-dependencies). –

관련 문제