0

Eclipse Oxygen.1a(OS:Windows 10 Home Edition 64-bit)でjarファイルを作成しました。私のプロジェクトのJREは、jre1.8.0_152(64ビット版)です。私は、Java 8 JREを使用して、私のjarファイルを実行すると、プログラムは完璧に動作しますが、私は、Java 9 JREを使用するとき、私は次のエラーを取得する:Java 9 JREにより、java.lang.NoClassDefFoundErrorが発生する:jar実行時にorg/apache/commons/lang3/StringUtilsが発生する

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

私は実行すると、このエラーが発生します。Java 9 JREを使用してjava -jar myjarfile.jarを。

Apache Commons Langcommons-lang3-3.7.jarがプロジェクトライブラリに追加されました)の最新バージョンを埋め込み、最新のJava 9 Runtime(jre9.0.1)を使用しました。 Apacheページには、Java 7.0以上が必要です。
Java 9とApache Commonsライブラリの間に互換性の問題はありますか?これを解決する方法はありますか?

更新

コマンドラインは、これらの設定を使用して、Eclipseの持つRunnableをJARをエクスポートして作成(デバッグビュー、上の右クリックし、[プロパティ]をクリックします)

"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 

Jarファイルが含まれていますRunnable JAR export settings

第2のアップデート:私は他のWindows 10 pro 64ビットシステムとUb Java 9でLTS 16.04.3と同じ問題がありました。

+1

** commons-lang3-3.7.jar **は私の側でうまく動作します。 1)アプリケーションを実行してください。2)終了したら、デバッグビューを開き、<終了した終了値:...>を右クリックし、プロパティをクリックします。3)コマンドラインからすべてをコピーして貼り付けます。ここの質問に。 – ZhekaKozlov

+0

* jarファイルを作成しました。* Eclipseを使用していますか?あなたに続くステップを共有できますか? – nullpointer

+0

@ZhekaKozlov私の投稿を更新しました。コメントには最大文字数があります。 – Zerthimon

答えて

1

ユーザーのコメントを慎重に検討した結果、最終的に解決されました。 「必要なライブラリを生成したJARに抽出」をパッケージ化するのではなく選択したときに問題が解決しました。 enter image description here 私のjarファイルはJava 8とJava 9 JREで正常に動作します。 私のLinuxとWindowsのステーション(32ビットと64ビット)でテストしました。

私は、Java 9 JREがJAR形式(commons-lang3-3.7.jar)でApache Commons Langライブラリを検出できなかったことが問題の核心だと考えています。私のJARに抽出されたcommons-lang3-3.7.jarの内容が解決されたら、問題は解決しました!

+2

これはJDK 9の問題ではないと思われます。Eclipseのように、クラスパスにcommons-lang3.3.7.jarを入れないほうがいいでしょう。 Eclipse環境の外部でこれを試して、問題を再現できるかどうか確認すると便利です。 –

+0

@AlanBateman Eclipse OxygenはJava 9で多くの問題が発生したため、おそらくEclipseバグです。 NetBeans IDE 8.2を使用して問題を複製し、結果を投稿します。 – Zerthimon

+0

Eclipseバグが疑われる場合は、https://bugs.eclipse.org/bugs/enter_bug.cgi?product=JDT、TIAに報告してください。 –

関連する問題