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 파일은 이전에 작동 한 이후로 손상되지 않았습니다. 이 문제를 해결하려면 어떻게해야합니까?
감사합니다! 항아리를 매 실행마다 명령으로 작성하지 않고 포함시키는 방법을 알고 있습니까? 편집 : 네 번째 명령은 훌륭하게 작동합니다. 감사! – itaied
[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). –