2015-10-16 89 views
1

我试图部署Spring Boot应用程序。我通过Maven插件构建了一个jar文件。但我得到一个错误说:Spring Boot部署 - NoClassDefFoundError

Exception in thread "main" java.lang.NoClassDefFoundError: org/springframework/boot/SpringApplication 
     at com.spring-boot.example.AppConfig.main(AppConfig.java:18) 
Caused by: java.lang.ClassNotFoundException: org.springframework.boot.SpringApplication 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357) 
    ... 1 more 

我试着添加额外的插件到pom.xml文件,但没有一个工作。任何帮助将非常感激。

这是我的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/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 

    <groupId>com.spring-boot.example</groupId> 
    <artifactId>spring-boot-example</artifactId> 
    <version>0.1</version> 

    <properties> 
     <java.version>1.8</java.version> 
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
     <start-class>com.spring-boot.example.AppConfig</start-class> 

     <spring.version>4.0.7.RELEASE</spring.version> 
     <log4j.version>1.2.17</log4j.version> 
     <jdk.version>1.7</jdk.version> 
    </properties> 

    <parent> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-parent</artifactId> 
     <version>1.1.9.RELEASE</version> 
    </parent> 

    <dependencies> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-web</artifactId> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-actuator</artifactId> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-test</artifactId> 
      <scope>test</scope> 
     </dependency> 

     <dependency> 
      <groupId>org.hibernate</groupId> 
      <artifactId>hibernate-validator</artifactId> 
     </dependency> 

     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-test</artifactId> 
      <scope>test</scope> 
     </dependency> 

     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-jdbc</artifactId> 
      <version>4.2.0.RELEASE</version> 
     </dependency> 

     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-jdbc</artifactId> 
      <version>1.2.1.RELEASE</version> 
     </dependency> 

     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-tomcat</artifactId> 
      <scope>provided</scope> 
     </dependency> 


    </dependencies> 

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

你是如何构建,部署和运行你的应用程序?该错误意味着您在类路径中缺少Spring jar文件。 – Jesper

+0

我通过无缝插件运行它 - > spring-boot:run->“Run Maven Build”。我通过单击插件 - > jar:jar - >“运行Maven Build”来部署它。 – Someone

回答

0

第一。

此外,独立于你正在使用的版本,你错过了包含这个依赖类:

<dependency> 
    <groupId>org.springframework.boot</groupId> 
    <artifactId>spring-boot</artifactId> 
    <version>1.2.6.RELEASE</version> 
</dependency> 

但请记住,所有的Spring引导依赖依靠Spring框架的传递依赖,所以检查如果它们存在,则在IDE的依赖关系层次结构面板中。

根据您部署应用程序的方式,您必须确保所有依赖项在运行时都可用。

这可以通过以下方式获取,例如repackage目标变成你的POM的build部分spring-boot-maven-plugin

<build> 
     <plugins> 
      <plugin> 
       <groupId>org.springframework.boot</groupId> 
       <artifactId>spring-boot-maven-plugin</artifactId> 
       <version>${spring-boot-version}</version> 
       <configuration> 
        <mainClass>your-main-class</mainClass> 
       </configuration> 
       <executions> 
        <execution> 
         <goals> 
          <goal>repackage</goal> 
         </goals> 
        </execution> 
       </executions> 
      </plugin> 
     </plugins> 
</build> 
+0

我无法更改版本,我收到错误。我确实改变了插件,但结果与之前一样(我得到一个异常java.lang.NoClassDefFoundError)。 – Someone

+0

好的,我解决了它。对于有同样问题的人:http://stackoverflow.com/questions/23868580/one-spring-boot-project-deploy-to-both-jar-or-war – Someone

相关问题