【发布时间】:2015-01-12 15:52:09
【问题描述】:
我遇到了一个非常奇怪的错误(对我来说)。我们在项目的 pom 文件中添加了一个新的依赖项。 jar 文件在项目中(从存储库下载),我们可以看到所有的类文件和源代码。
我们在程序中添加了一些代码来创建在新 jar 文件中定义的一些类。代码编译没有错误,war 文件部署在网络服务器(websphere)中也没有问题。
但是在调试程序时,当我们尝试从新的 jar 文件创建第一个对象时,我们发现了 java.lang.NoClassDefFoundError 异常。
今天发现jar文件是用jdk 1.7编译的,我们所有的项目都是用jdk 1.6编译的。 我在manifest文件中看到了用来编译jar文件的jdk。这个信息正确吗? jar 文件中使用的 jdks 与我的项目之间的差异可能会导致问题吗?
我检查了 jar 文件定义是否存在于类路径中,并且 websphere 服务器被重启了几次。
堆栈跟踪:
Caused by: java.lang.ClassNotFoundException: cnaf.verificateurbiciban.ws.v1.VerificateurbicibanV1ServiceCnaf
at java.net.URLClassLoader.findClass(URLClassLoader.java:423)
at com.ibm.ws.bootstrap.ExtClassLoader.findClass(ExtClassLoader.java:191)
at java.lang.ClassLoader.loadClass(ClassLoader.java:660)
at com.ibm.ws.bootstrap.ExtClassLoader.loadClass(ExtClassLoader.java:111)
at java.lang.ClassLoader.loadClass(ClassLoader.java:626)
at com.ibm.ws.classloader.ProtectionClassLoader.loadClass(ProtectionClassLoader.java:62)
at com.ibm.ws.classloader.ProtectionClassLoader.loadClass(ProtectionClassLoader.java:58)
at com.ibm.ws.classloader.CompoundClassLoader.loadClass(CompoundClassLoader.java:510)
at java.lang.ClassLoader.loadClass(ClassLoader.java:626)
at com.ibm.ws.classloader.CompoundClassLoader.loadClass(CompoundClassLoader.java:542)
at java.lang.ClassLoader.loadClass(ClassLoader.java:626)
at com.ibm.ws.classloader.CompoundClassLoader.loadClass(CompoundClassLoader.java:542)
at java.lang.ClassLoader.loadClass(ClassLoader.java:626)
... 56 more
【问题讨论】:
-
你能确认它声称找不到的类确实存在于 jar 文件中吗?
-
是的,类存在,默认init存在。代码编译,运行时失败。
标签: java eclipse maven jar websphere