したがって、多くのjarファイルに依存する別のjarファイルに依存するmainメソッドを持つ1つのクラスを作成しました。簡単にするために、私はOne-JARを使い、単一の実行可能なjarファイルを作成しました。私が作成した jarファイルは、私はそれを実行することができました、結構です:EclipseはOne-JARで作成したjarを認識しません
java -jar foo.jar
これが成功した私のメインのアプリケーションを実行します。
次に、私はEclipseで新しいプロジェクトを作成し、foo.jarを「外部jarの追加」(私はずっとやっていますが、いつも動作します)を経由して構築パスに追加しました。なんらかの理由で、私のEclipseプロジェクトでは、foo.jarからのパッケージのインポートを認識しないという不満があります。
私はEclipseでのjar問題に関する以前の質問を見ましたが、何も助けませんでした。私はそれがOne-Jarが作成するツリーとは関係があると思うが、コマンドラインからの "java -jar foo.jar"はうまく動作するので、Eclipseがクラスファイルを見ない理由を理解できない。
ありがとうございます!メイン内
META-INF OneJar.class com doc lib main
:
更新:ワンジャーのように見えることで ここに私のfoo.jarを作成した方法です
main main.jar
内部が持つ自分のアプリケーションのこの主なパッケージツリー。クラスファイル。今、私がEclipseに "main.jar"を含めると、私のアプリケーションを認識します。しかし、それはlib /の下の他の依存関係を認識しないので、実行時例外をスローします。
更新2: One-jarとEclipseの問題は解決されていませんが、誰かがfat jar Eclipseプラグインに言いましたので、試してみました。それが生成したjarファイルは、EclipseとMavenの両方で動作しました。彼らは実際にOne-Jarもサポートします.Jarを作成するときにOne-Jarオプションをチェックすることができます。私はそれを使用しませんでしたが、そこにあります(ライブラリの競合を処理する必要があるため実際に使用する価値がある場合)。 助けてくれてありがとう。
ワンジャーが作成するジャーは、クラスが入ったジャーです。 –
右。しかし、私のパッケージがcom.example.mainであるとしましょう。次に、.classファイルをmain/main/com/example/main/ – user247866
の下に置きます。シェーディングの仕方と同じように、矛盾を避けるためにそうしていると思います。ワンジャーが非マンギングのオプションを持っているかどうかはわかりません。 –