104

OptaPlanner 6.0.1 ライブラリを使用してプロジェクトを IntelliJ IDEA の jar アーティファクトを介して .jar にパッケージ化しようとしていますが、標準を含む私の manifest.mf の代わりに

Manifest-Version: 1.0
Main-Class: a.b.c.app

jar は、OptaPlanner のサポート ライブラリの 1 つである ecj-3.7.2.jar で提供されるものを使用します。

Manifest-Version: 1.0
Build-Jdk: 1.6.0_26
Built-By: ibrandt
Created-By: Apache Maven
Archiver-Version: Plexus Archiver

このため"no main manifest attribute, in appname.jar"、アプリを実行しようとするとエラーが発生します。.jar ファイルのマニフェストを手動で置き換えると、すべてが正しく機能します。これを修正するためにできることはありますか?

ライブラリを別の /lib ディレクトリに保持し、jar アーティファクトのルートに Extracted Directory として追加しました。IntelliJ IDEA は v13.0.1 です。

4

7 に答える 7

267

私も同じ問題を抱えていました。

MANIFEST.MF が次の場所にあることを確認してください。

src/main/resources/META_INF/

いいえ

src/main/java/META_INF/
于 2014-01-12T11:31:01.057 に答える
12

修正するには:

  1. ファイル > プロジェクト構造
  2. 左側の[プロジェクト設定]で、[アーティファクト] を選択します。
  3. 中央のペインで JAR 定義を見つけて選択します
  4. [出力レイアウト] タブの左側のペインで、リストから jar ファイルを見つけて選択します。
  5. 下部にある [既存のマニフェストを使用] ボタンをクリックし、プロジェクト ソースにあるマニフェスト ファイルを選択します。
  6. [OK] をクリックしてビルドを実行します
于 2014-01-06T16:33:16.867 に答える
7

メイン クラスを指定する場合は、このプラグインを pom.xml に追加する必要があります。

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-jar-plugin</artifactId>
    <version>2.6</version>
    <configuration>
        <archive>
            <manifest>
                <mainClass>Form</mainClass>
            </manifest>
        </archive>
    </configuration>
</plugin>
于 2016-01-12T13:11:51.520 に答える
1

同様の問題がありました。

問題はファイル pom.xml にありました。

<archive>
  <manifestEntries>
    <Dependencies>one.jar,
                  two.rar, 
                  other.jar
    </Dependencies>
  </manifestEntries>
</archive>

このコードがEclipseで機能する理由はわかりませんが、IntelliJでは機能しません

これで正解。

<archive>
  <manifestEntries>
    <Dependencies>one.jar, two.rar, other.jar</Dependencies>
  </manifestEntries>
</archive>

Manifest.mf が機能しました!!!

これが役立つことを願っています。

于 2015-10-08T12:25:02.187 に答える
0

マニフェストのように問題がないようにするには、「src」ディレクトリに「META-INF」という名前のディレクトリが必要です。したがって、それを作成し、次の内容の「MANIFEST.MF」という名前のファイルをその中に入れます。

Manifest-Version: 1.0
Main-Class: <packageName>.Main

上記の Main クラスを含むパッケージの名前を置き換えることを忘れないでください!

于 2016-12-20T15:33:53.480 に答える
0

実行可能な jar を生成するには、いくつかの方法があります。IntelliJ の GUI 機能を使用することは、1 つの良い方法です。もう 1 つの方法は、ビルドサーバーに適したMaven (または同様に gradle、buildr など) を使用することです。

これは、optaplanner の例の maven ビルドから多かれ少なかれコピーして貼り付けることができます。

  1. エンドユーザー jar (optaplanner-examples-*.jar)には、依存関係のクラスパスがマニフェストに含まれている必要があります。
  2. sh および bat スクリプトは、それに応じてその jar を実行する必要があります。
于 2014-01-07T07:48:15.883 に答える