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

标签 java eclipse maven jar websphere

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

今天发现jar文件是用jdk 1.7编译的,而我们所有的项目都是用1.6 jdk编译的。 我在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

最佳答案

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

关于在使用 1.6 jdk 编译的项目中运行 jdk 1.7 编译的 jarfile 时出现 java.lang.NoClassDefFoundError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27905836/

相关文章:

java - Spring 启动 java.lang.ClassNotFoundException

java - Jersey ExceptionMapper 中的 toResponse 不会被调用

eclipse - Maven 3.2.5 不适用于 JDK6

java - 日期属性在 java 类的方法中不起作用

java - 如何在 Eclipse 调试器中检查 "current"异常?

java - webDriver 中的分页显示陈旧元素引用异常

java - maven项目中如何生成web.xml文件

Maven 忽略 settings.xml 文件

java - 在 Java EE 的 Session.vs. 中保存连接连接池

java - 如何使用 Java 正则表达式分割字符串,并在结果列表中包含可变宽度分隔符