web-dev-qa-db-ja.com

Java jar-メインマニフェスト属性エラーなし

シンプルなJavaプログラム(maven with pom)を作成しました。CMDでコマンドを実行すると、指定されたパスの下にファイルが作成されます... mvn clean installこれは正常に終了しました。次は、作成されたこのjarをfollwoingのようなコマンドラインから使用したいです。

Java -jar   "/Users/i012/IdeaProjects/myproj/target/test.rts-1.0-SNAPSHOT.jar" path2genfile2create 

これは私のプログラムを実行する必要があります(これは私がこのようなものを初めて試したとき...)

しかし、私が得ているエラーは:

no main manifest attribute, in /Users/i012/IdeaProjects/myproj/target/test.rts-1.0-SNAPSHOT.jar

ここで何が欠けているのでしょうか? which マニフェスト属性

エラーは作成したクラスからのものではありません

私はいくつかのMETA-INF/MANIFEST.MFを作成しましたが、助けにはなりませんが、おそらく間違っています

7
Jenny Hilton

Maven Assemblyプラグインを使用している場合、またはIDEツールが必要な場合、mainClass要素が必要です。これは私が使用しているものです:

<plugin>
    <artifactId>maven-Assembly-plugin</artifactId>
    <configuration>
      <archive>
        <manifest>
          <mainClass>com.foo.MyMainClass</mainClass>
        </manifest>
      </archive>
      <descriptorRefs>
        <descriptorRef>jar-with-dependencies</descriptorRef>
      </descriptorRefs>
    </configuration>
    <executions>
      <execution>
      <id>make-Assembly</id>
      <phase>package</phase>
      <goals>
        <goal>single</goal>
      </goals>
      </execution>
    </executions>
  </plugin>
9
Kevin Boone

私の場合、私はスプリングブートを使用していましたが、私のビルダーで私のビルダーについて言及していなかったので、私はそれを修正しました:

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>
4
saman

マニフェストは、jarファイル内のパスMETA-INF/MANIFEST.MFにあるファイルで、jarファイルを実行するためのクラスパスやメインクラスなどの属性を定義します。

基本的な構造は次のようになります。

Manifest-Version: 1.0
Created-By: 1.7.0_06 (Oracle Corporation)

プロパティMain-Class: classnameを追加して、エントリポイントを定義できます。

特定のマニフェストでjarファイルを作成するには、次のことができます。

  1. IDE=を使用して、生成するjarにマニフェストを追加します。
  2. jar cfm MyJar.jar Manifest.txt MyPackage/*.classなどのコマンドを使用して、指定されたマニフェストとクラスでjarを手動で作成します。
  3. 手動でjarを解凍し、マニフェストを追加して、再度圧縮します。通常、圧縮ツールはドラッグ/ドロップでこれを行うことができます。

Jarマニフェストファイルの詳細を確認できますhere

4
alirabiee

アプリケーションを実行するにはメインクラスが必要です。以下を試してください。それは私のために働いた。

Mavenビルドツールを使用している場合は、pom.xmlファイルに次のコードスニペットを追加します。

 <packaging>jar</packaging>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.source>1.7</maven.compiler.source>
        <maven.compiler.target>1.7</maven.compiler.target>
    </properties>

    <build>
        <plugins>

        <plugin>
            <artifactId>maven-Assembly-plugin</artifactId>
            <configuration>
                <archive>
                    <manifest>
                        <mainClass>com.validator.App</mainClass>
                    </manifest>
                </archive>
                <descriptorRefs>
                    <descriptorRef>jar-with-dependencies</descriptorRef>
                </descriptorRefs>
            </configuration>
            <executions>
                <execution>
                    <id>make-Assembly</id>
                    <phase>package</phase>
                    <goals>
                        <goal>single</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>

        </plugins>


    </build>
1
Dulith De Costa