簡體   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