簡體   English   中英

Java 9 JRE在jar執行時導致java.lang.NoClassDefFoundError:org / apache / commons / lang3 / StringUtils

[英]Java 9 JRE causes java.lang.NoClassDefFoundError: org/apache/commons/lang3/StringUtils on jar execution

我在Eclipse Oxygen.1a(OS:Windows 10 Home Edition 64位)上創建了一個jar文件。 我項目的JRE是jre1.8.0_152(64位版本)。 當我使用Java 8 JRE運行jar文件時,程序運行正常,但是當我使用Java 9 JRE時,出現以下錯誤:

Exception in thread "AWT-EventQueue-0" java.lang.NoClassDefFoundError: org/apache/commons/lang3/StringUtils

當我使用Java 9 JRE 執行 java -jar myjarfile.jar 時,會發生此錯誤

我嵌入了最新版本的Apache Commons Lang (在項目庫中添加了commons-lang3-3.7.jar ),並使用了最新的Java 9 Runtime(jre9.0.1)。 Apache頁面指出需要Java 7.0+。
Java 9和Apache Commons庫之間是否存在不兼容問題? 有什么辦法解決這個問題?

更新
命令行包含(“調試”視圖,右鍵單擊並單擊“屬性”)

"C:\Program Files\Java\jre1.8.0_152\bin\javaw.exe" 
-agentlib:jdwp=transport=dt_socket,suspend=y,address=localhost:50317 
-Dfile.encoding=UTF-8 
-classpath "C:\Program Files\Java\jre1.8.0_152\lib\resources.jar;
C:\Program Files\Java\jre1.8.0_152\lib\rt.jar;
C:\Program Files\Java\jre1.8.0_152\lib\jsse.jar;
C:\Program Files\Java\jre1.8.0_152\lib\jce.jar;
C:\Program Files\Java\jre1.8.0_152\lib\charsets.jar;
C:\Program Files\Java\jre1.8.0_152\lib\jfr.jar;
C:\Program Files\Java\jre1.8.0_152\lib\ext\access-bridge-64.jar;
C:\Program Files\Java\jre1.8.0_152\lib\ext\cldrdata.jar;
C:\Program Files\Java\jre1.8.0_152\lib\ext\dnsns.jar;
C:\Program Files\Java\jre1.8.0_152\lib\ext\jaccess.jar;
C:\Program Files\Java\jre1.8.0_152\lib\ext\jfxrt.jar;
C:\Program Files\Java\jre1.8.0_152\lib\ext\localedata.jar;
C:\Program Files\Java\jre1.8.0_152\lib\ext\nashorn.jar;
C:\Program Files\Java\jre1.8.0_152\lib\ext\sunec.jar;
C:\Program Files\Java\jre1.8.0_152\lib\ext\sunjce_provider.jar;
C:\Program Files\Java\jre1.8.0_152\lib\ext\sunmscapi.jar;
C:\Program Files\Java\jre1.8.0_152\lib\ext\sunpkcs11.jar;
C:\Program Files\Java\jre1.8.0_152\lib\ext\zipfs.jar;
C:\my Java lab\Eclipse Oxygen\Workspaces\JNotifier\JNotifier\bin;
C:\my Java lab\Eclipse Oxygen\Workspaces\JNotifier\JNotifier\src\libPack\commons-lang3-3.7.jar" libPack.JCostCalculator

通過使用以下設置通過Eclipse導出可運行的JAR創建的Jar文件:
可運行的JAR導出設置

第二次更新 :我在其他Windows 10專業版64位系統和具有Java 9的Ubuntu 16.04.3 LTS上測試了我的JAR,並遇到了相同的問題。

經過仔細考慮用戶評論,終於找到了解決方案。 當我選擇“將所需的庫提取到生成的JAR中 ”而不是打包時,問題解決了。 在此處輸入圖片說明 現在,我的jar文件可以在Java 8和Java 9 JRE上正常工作。 在我的Linux和Windows工作站(32和64位)上進行了測試。

我相信問題的核心是Java 9 JRE無法檢測到JAR格式的Apache Commons Lang庫(commons-lang3-3.7.jar)。 當將commons-lang3-3.7.jar的內容提取到我的JAR中時,問題解決了!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM