web-dev-qa-db-fra.com

Impossible de charger l'attribut manifeste Main-Class lors de l'exécution de Java -jar

J'ai construit avec succès mon projet Spring MVC avec mvn clean package en suivant ce tutoriel .

Maintenant j'essaye de faire fonctionner le service avec:

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

Mais je reçois cette erreur:

Impossible de charger l'attribut manifeste Main-Class à partir de la cible/gs-servant-web-content-0.1.0.jar

Est-ce que je manque quelque chose?

55
Simone

Si vous travaillez avec Spring Boot, cela résoudra votre problème:

<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>

Guide de référence | Spring Boot Maven Plugin

133
Mradul Pandey

Il se peut que vous manquiez le plug-in Spring Boot Maven.

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

Vous devez le spécifier dans votre pom.xml - Cela rendra votre jar exécutable avec toutes les dépendances (remplacez 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

vérifier l'ordre de

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

il devrait être au-dessus

dockerfile-maven-plugin sinon le reconditionnement aura lieu

cela a résolu mon problème d'absence d'attribut principal dans manifest.

1
Musab Qamri

Tu es absent maven-jar-plugin dans lequel vous devez ajouter la balise manifest.

1
user2173738

Pour le démarrage du printemps, j'ai créé un fichier MANIFEST.MF à l'intérieur META-INF dossier.

dans mon IDE STS, j'ai placé le dossier META-INFO dans le dossier src/main/resources comme suit:

screenshot from STS IDE (Eclipse project)

le contenu du fichier 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. Chaque mention de "bankim"/"Bankim" fait référence à mon nom de projet, remplacez-le donc par le nom de votre projet qui
  2. prenez note de la valeur "Start-Class". il devrait contenir le "chemin" vers la classe qui a votre méthode principale .
  3. la ligne: Main-Class: org.springframework.boot.loader.JarLaunchers doit être laissée telle quelle.

**** Le manifeste ci-dessus a été créé pour moi en utilisant le "plug-in print-boot-maven" mentionné ci-dessus par "Mradul Pandey" (réponse donnée le 2 septembre 2015 à 4:50)

J'espère que cela t'aides

1
Dror

J'avais le spring-boot-maven-plugin mais j'ai quand même eu l'erreur concernant la classe principale.

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

Enfin, j'ai dû utiliser le maven-jar-plugin et ajoutez le 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>

Et c'était bien d'y aller!

0
veer7

Utilisation spring-boot-maven-plugin

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

et assurez-vous de définir property start-class dans le pom.xml

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

Alternativement, la classe principale peut être définie en tant qu'élément mainClass du plugin spring-boot-maven dans la section plugin de votre fichier pom.xml:

<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