2015-10-16 109 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

相關問題