シンプルな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を作成しましたが、助けにはなりませんが、おそらく間違っています
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>
私の場合、私はスプリングブートを使用していましたが、私のビルダーで私のビルダーについて言及していなかったので、私はそれを修正しました:
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
マニフェストは、jarファイル内のパスMETA-INF/MANIFEST.MFにあるファイルで、jarファイルを実行するためのクラスパスやメインクラスなどの属性を定義します。
基本的な構造は次のようになります。
Manifest-Version: 1.0
Created-By: 1.7.0_06 (Oracle Corporation)
プロパティMain-Class: classname
を追加して、エントリポイントを定義できます。
特定のマニフェストでjarファイルを作成するには、次のことができます。
jar cfm MyJar.jar Manifest.txt MyPackage/*.class
などのコマンドを使用して、指定されたマニフェストとクラスでjarを手動で作成します。Jarマニフェストファイルの詳細を確認できますhere。
アプリケーションを実行するにはメインクラスが必要です。以下を試してください。それは私のために働いた。
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>