web-dev-qa-db-ja.com

Java -jarの実行中にMain-Classマニフェスト属性をロードできませんでした

Spring MVCプロジェクトをmvn clean packageに従う このチュートリアル

今、私はサービスを実行しようとしています:

mvn clean package && Java -jar target/gs-serving-web-content-0.1.0.jar

しかし、私はこのエラーを受け取ります:

target/gs-serving-web-content-0.1.0.jarからMain-Classマニフェスト属性をロードできませんでした

何か不足していますか?

55
Simone

Spring Bootを使用している場合、これにより問題が解決します。

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <version>1.2.5.RELEASE</version>
            <executions>
                <execution>
                    <goals>
                        <goal>repackage</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>

リファレンスガイド| Spring Boot Mavenプラグイン

133
Mradul Pandey

Spring Boot Mavenプラグインが欠落している可能性があります。

<plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
19
Atish Narlawar

Pom.xmlで指定する必要があります-これにより、jarがすべての依存関係で実行可能になります(your.main.classを置き換えます):

<!-- setup jar manifest to executable with dependencies -->
<plugin>
  <artifactId>maven-Assembly-plugin</artifactId>
  <configuration>
    <descriptorRefs>
      <descriptorRef>jar-with-dependencies</descriptorRef>
    </descriptorRefs>
    <archive>
      <manifest>
        <mainClass>your.main.class</mainClass>
      </manifest>
    </archive>
  </configuration>
  <executions>
    <execution>
      <phase>package</phase>
      <goals>
       <goal>single</goal>
      </goals>  
    </execution>
  </executions>
</plugin>
3
Martin Seeler

の順序を確認してください

<plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
</plugin>

それは上でなければなりません

dockerfile-maven-pluginまたは再パッケージ化が行われます

これにより、マニフェストに主要な属性がないという私の問題が解決しました。

1
Musab Qamri

manifestタグを追加する必要があるmaven-jar-pluginがありません。

1
user2173738

スプリングブートでは、META-INFフォルダー内にMANIFEST.MFファイルを作成しました。

sTS IDEで、META-INFOフォルダーをsrc/main/resourcesフォルダー内に次のように配置しました。

screenshot from STS IDE (Eclipse project)

mANIFEST.MFファイルの内容:

Manifest-Version: 1.0
Implementation-Title: bankim
Implementation-Version: 1.5.6.RELEASE
Archiver-Version: Plexus Archiver
Built-By: Yourname
Implementation-Vendor-Id: com.bankim
Spring-Boot-Version: 1.5.6.RELEASE
Implementation-Vendor: Pivotal Software, Inc.
Main-Class: org.springframework.boot.loader.JarLauncher
Start-Class: com.bankim.BankimApplication
Spring-Boot-Classes: BOOT-INF/classes/
Spring-Boot-Lib: BOOT-INF/lib/
Created-By: Apache Maven 3.3.9
Build-Jdk: 1.8.0_131
Implementation-URL: http://projects.spring.io/spring-boot/bankim/
  1. 「bankim」/「Bankim」のすべての言及は私のプロジェクト名を参照しているので、それをあなたのプロジェクト名に置き換えてください
  2. 「Start-Class」値に特に注意してください。 mainメソッドを持つクラスへの「パス」を含める必要があります。
  3. 行:Main-Class:org.springframework.boot.loader.JarLauncherはそのままにしておく必要があります。

****上記の「Mradul Pandey」による「spring-boot-maven-plugin」を使用して、上記のマニフェストが作成されました(15年9月2日4:50に回答)

お役に立てれば

1
Dror

spring-boot-maven-pluginがありましたが、それでもメインクラスに関するエラーが発生していました。

<plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
</plugin>

最後に、maven-jar-pluginを使用し、mainClassを追加する必要がありました

    <plugin>
        <groupId>org.Apache.maven.plugins</groupId>
        <artifactId>maven-jar-plugin</artifactId>
        <version>2.4</version>
        <configuration>
          <archive>
            <manifest>
            <mainClass>com.org.proj.App</mainClass>
            </manifest>
          </archive>
        </configuration>
    </plugin>

行って良かった!

0
veer7

spring-boot-maven-pluginを使用

<plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
</plugin>

そして、pom.xmlでproperty start-classを必ず設定してください

<properties>
      <!-- The main class to start by executing "Java -jar" -->
      <start-class>org.example.DemoApplication</start-class>
</properties>

または、メインクラスは、pom.xmlのpluginセクションでspring-boot-maven-pluginのmainClass要素として定義できます。

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>             
            <executions>
                 <execution>
                     <goals>
                         <goal>repackage</goal>
                     </goals>
                     <configuration>
                         <classifier>spring-boot</classifier>
                         <mainClass>${start-class}</mainClass>
                     </configuration>
                 </execution>
             </executions>
        </plugin>
    </plugins>
</build> 
0
tycoon