2017-03-10 6 views
1

私はプログラムを実行可能なJARとしてエクスポートしようとしていますが、Eclipseではすべて正常に動作しています。私は、次のことをチェックしました:エクスポート私は生成されたJARを開くと、私はPackage required libraries into generated JAR "Package required libraries"でもJava NoClassDefFoundError

  • を選択すると

    • Java Build Path
    • の下で私のライブラリ内のすべてのjarファイルを含めるには、Order and Export
    • 下でそれらすべてをチェック、私は他のサードパーティのJARがすべてルートにあるのを見ることができます

    実行可能なJARを実行すると、次のようになります。

    私は仕事に私の実行可能なJARを得た
    java.lang.NoClassDefFoundError: org/slf4j/LoggerFactory 
    at ca.carillon.jnlp.Launcher.<clinit>(Launcher.java:14) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
    at java.lang.reflect.Method.invoke(Unknown Source) 
    at com.sun.javaws.Launcher.executeApplication(Unknown Source) 
    at com.sun.javaws.Launcher.executeMainClass(Unknown Source) 
    at com.sun.javaws.Launcher.doLaunchApp(Unknown Source) 
    at com.sun.javaws.Launcher.run(Unknown Source) 
    at java.lang.Thread.run(Unknown Source) 
    

    唯一の他の方法はExtract required libraries into generated JARを選択することで、しかし、私は誰かが私はEclipseで欠けている他に何を私に伝えることができ、これらすべてのサードパーティのJARファイルを抽出するためにしたくないですか?

  • 答えて

    0

    一般的には3つのオプションがあります。

    1. は、脂肪のjar /ユーバージャーの作成 - コンパイルを渡すだけでなく、すべての必要な依存関係を持っているjarファイルを、だけでなく、これらは、実行時に必要。
    2. 特定のファイルのみを使用して「通常の」jarを作成し、必要なすべての依存関係をclasspathに指定します。
    3. 何かの間に:いくつかの依存関係を含め、クラスパスでいくつかを提供してください。 (私はこれは少し奇妙に検討したいけど。)、このような機会のための

    私はGradleののアプリケーションのプラグイン(https://docs.gradle.org/current/userguide/application_plugin.htm)と脂肪のjarファイルを作成し、Mavenはまた(How can I create an executable JAR with dependencies using Maven?)であることを行うことができます。

    とにかくテストを実行するなど、いくつかのビルドツールに切り替えることをお勧めします。IDEでjarファイルを作成することは、むしろ悪い考えです。 Gradleに試してみてください。それは本当に簡単です。

    関連する問題