繁体   English   中英

在使用1.6 JDK编译的项目中运行JDK 1.7编译的jarfile时出现java.lang.NoClassDefFoundError

[英]java.lang.NoClassDefFoundError when running jdk 1.7 compiled jarfile inside project compiled with 1.6 jdk

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

今天,我发现jar文件已使用jdk 1.7进行了编译,而我们所有的项目均使用1.6 jdk进行了编译。 我在清单文件中看到用于编译jar文件的jdk。 此信息正确吗? jar文件中使用的jdks与我的项目之间的差异可能会导致问题?

我检查了classpath中是否存在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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM