Eclipseを使用して多くのライブラリを備えたプロジェクトから実行可能なJARを作成するプロセスはこれまで行われました。
エクスポート>実行可能なJAR>起動設定の選択>必要なライブラリを生成されたJARにパッケージ化する>完了
これにより、エクスポート先に単一のJARが作成され、サーバーにFTPで転送されて正常に実行されます。
最近さまざまな理由でIntelliJに切り替えましたが、一時的にEclipseに戻ることを余儀なくされるJARのビルドを除いて、すべてのケースで改善されました。
IntelliJ Iの場合:
[プロジェクト構造]> [アーティファクト]を開き、依存関係のあるモジュールから新しいJARを作成します。次に、JARの名前、その中のMETA-INF、およびExtracted <lib.jar/>
形式のすべてのライブラリを含む出力レイアウトを作成します(このVPNでスクリーンショットをアップロードできないのでごめんなさい)。
アーティファクト(約15MB大きい)をビルドし、サーバーにFTPで送信し、実行しようとするとエラーが発生します。
Exception in thread "main" Java.lang.SecurityException: Invalid signature file digest for Manifest main attributes
Eclipseでどのように模倣するのですか?
編集
作成される2つのJARは大きく異なります。
あなたは2つの問題に直面しています。1つは重大と思われ、もう1つは軽微です。
両方の問題の解決策は、アーティファクトの構築方法にあります。まず、すべてのextracted *.jar
を削除してから、図に示すように、使用可能な要素パンからすべてのjarを追加します。
パッケージ化された(圧縮された)jarファイルのみを追加すると、サイズが小さくなることは明らかです。ただし、署名の問題も解決します。詳細については、この 記事 をご覧ください。 1行だけ引用します。
公式のjarをそのままにして、依存関係としてマニフェストファイルに追加するのがおそらく最善です......
いくつかの依存関係が署名されており、再パッケージングがプロジェクトのMETA-INFを台無しにしているようです。
Mavenを使用している場合、
META-INF
の代わりに/main/resources
フォルダーをmain/Java
フォルダーの下に配置する必要があります。
参照: Intellij-Nikolay Chashnikov
その後、Java -jar filename.jar
を使用して、実行可能なjarを通常どおり実行できます。
次の手順を実行できます。
1)ファイル->プロジェクト構造->プロジェクト設定->アーティファクト-> Jar->依存関係のあるモジュールから
2)[プロジェクトビルドに含める]チェックボックスをオンにします。
3)モジュールを右クリック->モジュール 'ModuleName'をビルド