java.lang.NoClassDefFoundError在运行jdk 1.7编译的jarfile里面用1.6 jdk编译的项目

时间:2015-01-12 15:52:09

标签: java eclipse maven jar websphere

我得到了一个非常奇怪的错误(对我而言)。我们在项目的pom文件中添加了一个新的依赖项。 jar文件在项目中(从存储库下载),我们可以看到所有类文件和源代码。 我们在程序中添加了一些代码来创建新jar文件中定义的一些类。代码编译没有错误,war文件部署在webserver(websphere)中也没有问题。 但是在调试程序时,当我们尝试从新的jar文件创建第一个对象时,我们发现了java.lang.NoClassDefFoundError异常。

今天我发现jar文件已经用jdk 1.7编译,我们所有的项目都是使用1.6 jdk编译的。 我看到用于编译清单文件中的jar文件的jdk。这个信息是否正确? jar文件和我的项目中使用的jdks之间的区别可能导致问题?

我检查了jar文件定义是否存在于classpath中,而且websphere服务器已多次重启。

Stacktrace:

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

1 个答案:

答案 0 :(得分:1)

问题可能是由于您用于执行代码的JRE版本引起的:如果您使用的是JRE 1.6,则不会执行为JRE 1.7编译的字节码。 JRE 1.7将完美地运行1.6和1.7字节码。尝试切换到JRE 1.7或更高版本。