尽管 jar 在类路径中,但获取 ClassNotFoundException
Posted
技术标签:
【中文标题】尽管 jar 在类路径中,但获取 ClassNotFoundException【英文标题】:Getting ClassNotFoundException though jar is in classpath 【发布时间】:2014-05-17 17:19:40 【问题描述】:我在作为 Linux 服务器的 Amazon EC2 实例上运行 Java 应用程序。我在构建路径中包含了一个 json jar,我检查了类路径,它就在那里。当我导入课程时
import org.json.*;
我没有收到任何编译错误,但是当我执行我的应用程序时,我得到了 ClassNotFoundException。
Exception in thread "Thread-1" java.lang.NoClassDefFoundError: org/json/JSONException
at Group.run(Group.java:62)
at java.lang.Thread.run(Thread.java:744)
Caused by: java.lang.ClassNotFoundException: org.json.JSONException
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)
有人知道怎么解决吗?
【问题讨论】:
首先,使用 import org.json.* 之类的导入被认为是不好的编码习惯;将其更改为 import org.json.JSONException 并查看您的代码是否仍然可以编译。如果您使用的是 eclipse,请使用组织导入来为您组织它们。另请提供您所包含的 jar 文件的版本和名称。 清理并构建您的项目,现在可能会突然出现编译错误,导致您的类文件无法更早生成。 我把它改成了 JSONException,还是不行。我已经从这里下载了jar:link我也清理并构建了项目,没有编译错误。 【参考方案1】:使用java反编译工具检查你的jar中是否存在class json异常或者包含必要的jar。
【讨论】:
jar 中确实存在。 那么这可能是两个 jar 具有相同类名的情况。检查您是否有多个版本的 json 或其他具有 jsonexception 类的 jar。其次,您可以简单地导入 JSONExcepiton 而不做 .*一个 只有一个jar...我也改成只导入JSONException,还是不行。我尝试使用另一个名为 simpleJson 的 jar,但我得到了与另一个类名相同的异常:at Group.run(Group.java:62) at java.lang.Thread.run(Thread.java:744) Caused by: java.lang.ClassNotFoundException: org.json.simple.parser.ParseException
***.com/questions/11346180/… 检查这个和 json-simple jar以上是关于尽管 jar 在类路径中,但获取 ClassNotFoundException的主要内容,如果未能解决你的问题,请参考以下文章
SBT:如何创建实用程序 jar 作为构建后步骤以将所有依赖 jar 包含在类路径中
收到一个主 jar 文件,其中包含需要在类路径中的其他 jar 文件。在我的 Maven 项目中包含这个主 jar 的最佳方法是啥?
Java操作oracle数据库提示:不支持的字符集 (在类路径中添加 orai18n.jar): ZHS16GBK,问题处理
Java操作oracle数据库提示:不支持的字符集 (在类路径中添加 orai18n.jar): ZHS16GBK,问题处理