webentwicklung-frage-antwort-db.com.de

java.lang.ClassNotFoundException: org.springframework.boot.SpringApplication Maven

Ich versuche, eine Frühlings-MVC-Anwendung zu erstellen ... Dies ist meine pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.Apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.Apache.org/POM/4.0.0 http://maven.Apache.org/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.acme</groupId>
    <artifactId>test</artifactId>
    <name>springmvc</name>
    <packaging>jar</packaging>
    <version>1.0.0-BUILD-SNAPSHOT</version>
    <properties>
        <org.springframework-version>3.1.1.RELEASE</org.springframework-version>
        <org.aspectj-version>1.6.10</org.aspectj-version>
        <org.slf4j-version>1.6.6</org.slf4j-version>
    </properties>

    <repositories>
        <repository>
            <id>spring-milestone</id>
            <url>http://repo.spring.io/libs-milestone</url>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
        </repository>
    </repositories>

    <pluginRepositories>
        <pluginRepository>
            <id>spring-milestone</id>
            <url>http://repo.spring.io/libs-milestone</url>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
        </pluginRepository>
    </pluginRepositories>

    <dependencies>
        <!-- Spring -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>${org.springframework-version}</version>
            <exclusions>
                <!-- Exclude Commons Logging in favor of SLF4j -->
                <exclusion>
                    <groupId>commons-logging</groupId>
                    <artifactId>commons-logging</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>${org.springframework-version}</version>
        </dependency>

        <!-- AspectJ -->
        <dependency>
            <groupId>org.aspectj</groupId>
            <artifactId>aspectjrt</artifactId>
            <version>${org.aspectj-version}</version>
        </dependency>

        <!-- Logging -->
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>${org.slf4j-version}</version>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>jcl-over-slf4j</artifactId>
            <version>${org.slf4j-version}</version>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
            <version>${org.slf4j-version}</version>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.15</version>
            <exclusions>
                <exclusion>
                    <groupId>javax.mail</groupId>
                    <artifactId>mail</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>javax.jms</groupId>
                    <artifactId>jms</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>com.Sun.jdmk</groupId>
                    <artifactId>jmxtools</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>com.Sun.jmx</groupId>
                    <artifactId>jmxri</artifactId>
                </exclusion>
            </exclusions>
            <scope>runtime</scope>
        </dependency>

        <!-- @Inject -->
        <dependency>
            <groupId>javax.inject</groupId>
            <artifactId>javax.inject</artifactId>
            <version>1</version>
        </dependency>

        <!-- Servlet -->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>servlet-api</artifactId>
            <version>2.5</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>javax.servlet.jsp</groupId>
            <artifactId>jsp-api</artifactId>
            <version>2.1</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>jstl</artifactId>
            <version>1.2</version>
        </dependency>

        <!-- Test -->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.7</version>
            <scope>test</scope>
        </dependency>

        <!-- Boot -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <version>0.5.0.M6</version>
            <exclusions>
                <exclusion>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-Tomcat</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jetty</artifactId>
            <version>0.5.0.M6</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
            <version>0.5.0.M6</version>
        </dependency>


    </dependencies>
    <build>
        <plugins>
            <plugin>
                <artifactId>maven-Eclipse-plugin</artifactId>
                <version>2.9</version>
                <configuration>
                    <additionalProjectnatures>
                        <projectnature>org.springframework.ide.Eclipse.core.springnature</projectnature>
                    </additionalProjectnatures>
                    <additionalBuildcommands>
                        <buildcommand>org.springframework.ide.Eclipse.core.springbuilder</buildcommand>
                    </additionalBuildcommands>
                    <downloadSources>true</downloadSources>
                    <downloadJavadocs>true</downloadJavadocs>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.Apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>2.5.1</version>
                <configuration>
                    <source>1.6</source>
                    <target>1.6</target>
                    <compilerArgument>-Xlint:all</compilerArgument>
                    <showWarnings>true</showWarnings>
                    <showDeprecation>true</showDeprecation>
                </configuration>
            </plugin>
            <!-- com.ilppa.cocktail.Application -->
            <plugin>
                <groupId>org.Apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <version>2.4</version>
                <configuration>
                    <archive>
                        <manifest>
                            <mainClass>com.ilppa.cocktail.Application</mainClass>
                        </manifest>
                    </archive>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>exec-maven-plugin</artifactId>
                <version>1.2.1</version>
                <configuration>
                    <mainClass>org.test.int1.Main</mainClass>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>

wenn ich mvn clean install starte, wird die .jar generiert, aber beim Starten von Java -jar target/test-1.0.0-BUILD-SNAPSHOT.jar

Ich habe einen Fehler 

Exception in thread "main" Java.lang.NoClassDefFoundError: org/springframework/boot/SpringApplication
    at com.acme.test.Application.main(Application.Java:12)
Caused by: Java.lang.ClassNotFoundException: org.springframework.boot.SpringApplication
    at Java.net.URLClassLoader$1.run(URLClassLoader.Java:366)
    at Java.net.URLClassLoader$1.run(URLClassLoader.Java:355)
    at Java.security.AccessController.doPrivileged(Native Method)
    at Java.net.URLClassLoader.findClass(URLClassLoader.Java:354)
    at Java.lang.ClassLoader.loadClass(ClassLoader.Java:425)
    at Sun.misc.Launcher$AppClassLoader.loadClass(Launcher.Java:308)
    at Java.lang.ClassLoader.loadClass(ClassLoader.Java:358)
    ... 1 more

Ich verstehe das nicht, ich habe keine Fehler in Eclipse

26
Ajouve

Ihr Jar enthält nicht die Abhängigkeiten wie Spring-Boot, nach denen es zur Laufzeit gesucht wird. Sie können eine konsolidierte Dose mit allen in dieser Frage beschriebenen Abhängigkeiten erstellen.

13
Saket

Wenn Sie im Frühling bleiben möchten, stellen Sie die Pom-Verpackung auf Glas 

<packaging>jar</packaging>

und fügen Sie das Spring-Boot-Maven-Plugin zu Ihren Eigenschaften in der Datei pom.xml hinzu: 

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

dann erstellt ein einfacher mvn package-Befehl eine vollständig ausführbare JAR-Datei.

Weitere Informationen finden Sie in dem sehr guten Referenzdokument für Federn (dabei auch Gradle-Style verwenden) Referenzdokument für Federn

12
stoffer

Meine wurde durch ein beschädigtes Maven-Repository verursacht.

Ich habe alles unter C:\Users\<me>\.m2\repository gelöscht.

Dann wurde ein Eclipse-Maven-Update durchgeführt, und es funktionierte beim ersten Mal.

Es wurde also einfach spring-boot.jar beschädigt.

7
David Lavender

Hier ist die Verpackung vom Typ jar, daher müssen Sie das Manifest-Plugin verwenden, um Abhängigkeiten in der Manifest.mf hinzuzufügen

Das Problem hierbei ist, dass Maven die Abhängigkeiten in der POM-Datei finden und den Quellcode kompilieren und das Ausgabefach erstellen kann. Bei der Ausführung der JAR-Datei enthält die Datei manifest.mf keine Details zu den Abhängigkeiten. Daher haben Sie diesen Fehler erhalten. Dies ist ein Fall von Klassenpfadfehlern.

Hier finden Sie die Details dazu.

3

Die Antwort auf die obige Frage ist keine der oben genannten. Wenn Sie einen neuen STS herunterladen, wird die OLD Spring Boot Parent-Version nicht unterstützt. Aktualisieren Sie einfach die übergeordnete Version mit der neuesten Version von STS, die funktionieren wird.

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.5.8.RELEASE</version>
    <relativePath/> <!-- lookup parent from repository -->
</parent>

Wenn Sie Probleme haben, das neueste zu erhalten, erstellen Sie einfach ein neues Spring Starter-Projekt. Springen Sie zu Datei-> Neu -> Spring Start-Projekt . Ich mache das jedes Mal, wenn ich STS ändere. Diese Arbeit ist für mich und ist die schnelle Lösung. Jeder hat eine andere Idee bitte teilen.

2
user3141256

Bereinigen Sie Ihren Maven-Cache und führen Sie ihn erneut aus:

mvn dependency:purge-local-repository
2

Eine andere Option ist die Verwendung des Apache Maven Shade Plugin : Dieses Plugin bietet die Möglichkeit, das Artefakt einschließlich der Abhängigkeiten in einem Uber-jar-Paket zu packen und die Pakete einiger Abhängigkeiten zu schattieren, dh umzubenennen .

fügen Sie dies Ihrem Build-Plugins-Abschnitt hinzu

<plugin>
     <groupId>org.Apache.maven.plugins</groupId>
     <artifactId>maven-shade-plugin</artifactId>
</plugin>
1
Francois

Das Hinzufügen von unten zu pom.xml löste mein Problem

<project xmlns="http://maven.Apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.Apache.org/POM/4.0.0 http://maven.Apache.org/xsd/maven-4.0.0.xsd">
0
jyotinadda

Ich hatte das gleiche Problem und habe die meisten der oben vorgeschlagenen Lösungen ausprobiert, aber keine funktionierte für mich. Schließlich baue ich mein gesamtes com.springframework-Repository neu auf (durch einfaches Löschen des Verzeichnisses .m2/org/springworkframework). 

Es hat für mich funktioniert.

0
user1693207

In meinem Fall habe ich maven nature manuell aus der .project - Datei entfernt, während das Projekt in Eclipse geöffnet war. Also, was ich tun würde, war, Maven Nature erneut über das Kontextmenü hinzuzufügen (klicken Sie dazu auf das Projekt> Konfiguration> Maven Nature hinzufügen). Danach hat alles gut geklappt: D

0
russellhoff