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

我正在尝试创建一个spring mvc应用程序。 这是我的pom.xml

  4.0.0 com.acme test springmvc jar 1.0.0-BUILD-SNAPSHOT  3.1.1.RELEASE 1.6.10 1.6.6    spring-milestone http://repo.spring.io/libs-milestone  false      spring-milestone http://repo.spring.io/libs-milestone  false       org.springframework spring-context ${org.springframework-version}    commons-logging commons-logging     org.springframework spring-webmvc ${org.springframework-version}    org.aspectj aspectjrt ${org.aspectj-version}    org.slf4j slf4j-api ${org.slf4j-version}   org.slf4j jcl-over-slf4j ${org.slf4j-version} runtime   org.slf4j slf4j-log4j12 ${org.slf4j-version} runtime   log4j log4j 1.2.15   javax.mail mail   javax.jms jms   com.sun.jdmk jmxtools   com.sun.jmx jmxri   runtime    javax.inject javax.inject 1    javax.servlet servlet-api 2.5 provided   javax.servlet.jsp jsp-api 2.1 provided   javax.servlet jstl 1.2    junit junit 4.7 test    org.springframework.boot spring-boot-starter-web 0.5.0.M6   org.springframework.boot spring-boot-starter-tomcat     org.springframework.boot spring-boot-starter-jetty 0.5.0.M6   org.springframework.boot spring-boot-starter-actuator 0.5.0.M6      maven-eclipse-plugin 2.9   org.springframework.ide.eclipse.core.springnature   org.springframework.ide.eclipse.core.springbuilder  true true    org.apache.maven.plugins maven-compiler-plugin 2.5.1  1.6 1.6 -Xlint:all true true     org.apache.maven.plugins maven-jar-plugin 2.4    com.ilppa.cocktail.Application      org.codehaus.mojo exec-maven-plugin 1.2.1  org.test.int1.Main    org.springframework.boot spring-boot-maven-plugin     

当我运行mvn clean install时会生成.jar但是当我启动它时java -jar target/test-1.0.0-BUILD-SNAPSHOT.jar

我有一个错误

 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 

我不明白,我在日食中没有错误,我认为.jar是maven的依赖

你的jar不包含它在运行时期间寻找的spring-boot等依赖项。 您可以构建一个包含此问题中概述的所有依赖项的统一jar。

如果你想留在弹簧靴空间,只需将pom包装设置为jar

 jar 

并将spring-boot-maven-plugin添加到pom.xml文件中的构建属性中:

    org.springframework.boot spring-boot-maven-plugin    

然后一个简单的mvn package命令将创建一个完整的可执行jar文件。

有关更多详细信息,请参阅非常好的弹簧参考文档(也可以使用gradle样式) 弹簧参考文档

我是由腐败的Maven存储库引起的。

我删除了C:\Users\\.m2\repository

然后做了Eclipse Maven Update,它第一次工作。

所以它只是spring-boot.jar被破坏了。

这里的包装是jar类型,因此你需要使用manifest插件,以便在Manifest.mf中添加依赖项。

这里的问题是maven可以在pom文件中找到依赖项并编译源代码并创建输出jar。 但是在执行jar时,manifest.mf文件不包含依赖项的详细信息。 因此你得到了这个错误。 这是类路径错误的一种情况。

在这里,您可以找到有关如何操作的详细信息。

另一个选择是使用Apache Maven Shade插件 :这个插件提供了将工件打包在超级jar中的function,包括它的依赖关系和阴影 – 即重命名 – 一些依赖项的包。

将其添加到您的构建插件部分

  org.apache.maven.plugins maven-shade-plugin  

上述问题的答案不属于上述问题。 下载新的STS时,它不支持OLD Spring Boot父版本。 只需使用最新的STS更新父版本即可。

  org.springframework.boot spring-boot-starter-parent 1.5.8.RELEASE    

如果您在获取最新信息时遇到问题,请创建一个新的Spring Starter项目。 转到文件 – >新建 – > Spring Start项目并创建一个演示项目,您将获得最新的父版本,更改您的版本将全部工作。 我每次换STS都这样做。 这项工作对我而言是快速修复。 有人有其他想法请分享。

清理您的maven缓存并重新运行:

 mvn dependency:purge-local-repository 

我有同样的问题并尝试了上面提出的大多数解决方案,但没有一个对我有用。 最后,我重建了整个com.springframework(maven)存储库(只需删除.m2 / org / springworkframework目录)。

它对我有用。