thread starter springboot reflect proyecto initializr generate create crear java spring maven

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



spring boot starter web (7)

Estoy tratando de crear una aplicación mvc de primavera. Este es mi 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>

cuando ejecuto mvn clean install se genera .jar pero cuando lo java -jar target/test-1.0.0-BUILD-SNAPSHOT.jar

Tengo un error

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

No entiendo, no tengo errores en eclipse, creo que el .jar está en maven depences


El mío fue causado por un repositorio corrupto de Maven.

Eliminé todo en C:/Users/<me>/.m2/repository .

Luego hizo una actualización de Eclipse Maven, y funcionó por primera vez.

Así que fue simplemente spring-boot.jar se corrompió.


Aquí el empaque es de tipo jar, por lo tanto, necesita usar el complemento de manifiesto para agregar dependencias al Manifest.mf

El problema aquí es que maven podría encontrar las dependencias en el archivo pom y compilar el código fuente y crear el jar de salida. Pero al ejecutar el jar, el archivo manifest.mf no contiene detalles de las dependencias. Por lo tanto, tienes este error. Este es un caso de errores classpath.

Aquí puede encontrar los detalles sobre cómo hacerlo.


Si desea permanecer en el espacio de arranque de primavera, simplemente configure el paquete de pom para jar

<packaging>jar</packaging>

y agregue el complemento spring-boot-maven-plugin a las propiedades de compilación en el archivo pom.xml:

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

a continuación, un comando de paquete mvn simple creará un archivo jar ejecutable completo.

Consulte el muy buen documento de referencia de primavera para obtener más detalles (también en el estilo gradle) doc. De referencia de primavera


Otra opción es utilizar el plugin Apache Maven Shade : este plugin proporciona la capacidad de empaquetar el artefacto en un uber-jar, incluidas sus dependencias y sombrear, es decir, cambiar el nombre, los paquetes de algunas de las dependencias.

agregue esto a su sección de complementos de compilación

<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-shade-plugin</artifactId> </plugin>


Su jar no contiene las dependencias como Spring-boot que está buscando durante el tiempo de ejecución. Puede construir un jar consolidado con todas las dependencias tal como se describe en esta pregunta .


La respuesta a la pregunta anterior no es ninguna de las anteriores. Cuando descargue un nuevo STS no será compatible con la versión anterior de OLD Spring Boot. Simplemente actualice la versión principal con la última versión con STS, funcionará.

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

Si tiene problemas para obtener lo último, solo cree un nuevo proyecto de inicio de primavera. Ir a archivo-> Nuevo -> Proyecto de inicio de primavera Y crear un proyecto de demostración que obtendrá la última versión principal, cambie su versión con que todo funcionará. Lo hago cada vez que cambio STS. Esto funciona para mí y es la solución rápida. Alguien tiene Otra idea por favor comparta.


Limpie su caché maven y vuelva a ejecutar:

mvn dependency:purge-local-repository