我下载了以下链接:
http://www.java2s.com/Code/JarDownload/java/java-json.jar.zip
然后我将jar添加到构建路径:右键单击Project>构建路径>配置构建路径>选择“库”选项卡>单击添加外部库>选择Jar文件下载。
我能够使用没有eclipse的java-json库给出任何错误。但是,当我将项目导出到jar时,没有选择将java-json Referenced Libraries包含在jar中。所以我假设通过将库添加到构建路径,我不必导出外部jar(无论如何都没有选项):
创建jar之后,我运行了程序:
java -jar gateway.jar -p 1732
我收到以下错误:
Exception in thread "Thread-0" java.lang.NoClassDefFoundError: org/json/JSONException
at com.guarddoggps.main.UdpServer.run(UdpServer.java:28)
at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.ClassNotFoundException: org.json.JSONException
at java.net.URLClassLoader$1.run(URLClassLoader.java:372)
at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:360)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 2 more
似乎运行时找不到类JSONException,即使它显然位于构建路径中包含的java-json.jar文件中,并且存在于Eclipse中的“Referenced Libraries”中。
我在这里可能会缺少什么?
答案 0 :(得分:0)
要解决此问题,您可以使用以下命令启动应用程序:
java -cp java-json.jar -jar gateway.jar -p 1732
为了正常工作,你必须在导出的jar的同一目录中使用java-json.jar。
答案 1 :(得分:0)
你也可以考虑创建一个所谓的胖jar,它将包含所有需要的类。例如:http://fjep.sourceforge.net/
如果您不想经历自己管理所有依赖性的麻烦,请考虑使用Maven https://maven.apache.org/或Gradle https://gradle.org/等构建工具。它们将帮助您管理所有依赖项工作,甚至可以从互联网上下载所需的罐子。