/ / Eclipseでjarファイルをビルドする際にエラーが発生する[duplicate] - java、eclipse、maven、jar、noclassdeffounderror

Eclipseでjarファイルをビルドする際にエラーが発生する[duplicate] - java、eclipse、maven、jar、noclassdeffounderror

だから私はEclipseでプロジェクトを作成し、それを使ってJARファイルを作成したい。 プロジェクトフォルダには、次のフォルダがあります。

  • src(2つのパッケージを含む)
  • JREシステムライブラリ
  • 参照されるライブラリ( "jasypt-1.9.2.jar"および "json_simple-1.1.jar")
  • libs(やはり "jasypt-1.9.2.jar"と "json_simple-1.1.jar")
  • リソース(イメージとファイルを含む)

私が行った場合:プロジェクトの名前 - >プロパティ - > Javaビルドパス - >ライブラリのrclick

私は両方のライブラリがビルドパスに正しく追加されているのを見る。

それから、プロジェクトの名前 - >エクスポートでrclickに行きます - > JARファイル ここで私はすべてをエクスポートします(確かに..!)。次に、MainClassをエントリポイントにして、JARファイルを問題なく作成します。

JARファイル(registry.jar)を抽出すると、必要なものがすべて含まれていることがわかります。 [パッケージ1、パッケージ2、META-INF、libs、リソース、.classpath、.project]

また、.classpathは正解です(少なくとも、私には100%確実ではないようです!):

   <?xml version="1.0" encoding="utf-8"?>
<classpath>
<classpathentry kind="src" path="src"/>
<classpathentry exported="true" kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
<classpathentry exported="true" kind="lib" path="libs/jasypt-1.9.2.jar"/>
<classpathentry exported="true" kind="lib" path="libs/json_simple-1.1.jar"/>
<classpathentry kind="output" path="bin"/>
</classpath>

しかし、次のように、コマンドライン(WindowsとUbuntuの両方)からregistry.jarファイルを実行すると、次のようになります。

java -jar registry.jar

私は得る:

Exception in thread "main" java.lang.NoClassDefFoundError: org/json/simple/parser/ParseException
at ...
at ...
Caused by: java.lang.ClassNotFoundException: org.json.simple.parser.ParseException
at java.net.URLClassLoader$1.run<Unknown Source>
at ...
at ...
... lots more

プログラムはコンパイルし、Eclipse内で完璧に動作します。 私はちょうど問題が何であるか把握できません...

回答:

回答№1は0

.classpath ファイルには意味がありません。これはEclipseでのみ使用されます。 Javaは、必要なライブラリが lib Jarファイルのエントリ。

あなたはコマンドを使ってライブラリのパスを含める必要があります:

java -jar registry.jar -cp lib

この場合、 lib エクスポートされたJarの横にあるフォルダです。

Mavenを使用している場合、アセンブリプラグインを使用して実行可能ファイルを生成することができます。 Mavenを使用して依存関係を持つ実行可能なJARを作成するにはどうすればよいですか?.