【问题标题】:Exception while starting spring boot application as jar将 Spring Boot 应用程序作为 jar 启动时出现异常
【发布时间】:2018-04-13 07:15:51
【问题描述】:

我使用 maven spring boot 插件创建了一个 jar,并尝试使用 java -jar App.jar 运行该 jar。主文件配置了 Spring Boot,当我尝试打包它启动 jar 时,我收到错误 -

Exception in thread "main" java.lang.NoClassDefFoundError: org/springframework/boot/SpringApplication
        at com.database.DatabaseApplication.main(DatabaseApplication.java:12)
Caused by: java.lang.ClassNotFoundException: org.springframework.boot.SpringApplication
        at java.net.URLClassLoader.findClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        ... 1 more

这表明打包的jar中缺少依赖jar。我尝试在网上寻找各种解决方案,但失败了,没有一个对我有用。我检查了NoClassDefinitonFoundPackage dependency jar 的答案,但它没有用,我最终每次都遇到同样的错误。下面是我的 pom.xml 的构建部分。有人可以帮忙吗?

当前配置

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <executions>
               <execution>
                 <goals>
                   <goal>repackage</goal>
                 </goals>
                 <configuration>
                   <classifier>spring-boot</classifier>
                   <mainClass>${start-class}</mainClass>
                 </configuration>
               </execution>
             </executions>
        </plugin>
    </plugins>
</build>

其他配置

<build>
<plugins>
    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-shade-plugin</artifactId>
        <executions>
          <execution>
            <phase>package</phase>
            <goals>
              <goal>shade</goal>
            </goals>
            <configuration>
              <transformers>
                <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                  <mainClass>${start-class}</mainClass>
                </transformer>
              </transformers>
            </configuration>
          </execution>
        </executions>
    </plugin>
</plugins>

<build>
<plugins>
    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-dependency-plugin</artifactId>
        <executions>
            <execution>
                <id>copy-dependencies</id>
                <phase>prepare-package</phase>
                <goals>
                    <goal>copy-dependencies</goal>
                </goals>
                <configuration>
                    <outputDirectory>${project.build.directory}/lib</outputDirectory>
                    <overWriteReleases>false</overWriteReleases>
                    <overWriteSnapshots>false</overWriteSnapshots>
                    <overWriteIfNewer>true</overWriteIfNewer>
                </configuration>
            </execution>
        </executions>
    </plugin>
    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-jar-plugin</artifactId>
        <configuration>
            <archive>
                <manifest>
                    <addClasspath>true</addClasspath>
                    <classpathPrefix>lib/</classpathPrefix>
                    <mainClass>${start-class}</mainClass>
                </manifest>
            </archive>
        </configuration>
    </plugin> 
</plugins>

下面是没有添加构建的 pom.xml 文件 -

<?xml version="1.0" encoding="UTF-8"?>

http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0

<groupId>com.database</groupId>
<artifactId>Database</artifactId>
<version>0.0.1</version>
<packaging>jar</packaging>

<name>Database application </name>
<description>Database operations application</description>

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

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    <start-class>com.database.App</start-class>
    <java.version>1.8</java.version>
</properties>

<dependencies>  
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-tomcat</artifactId>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-devtools</artifactId>
        <scope>runtime</scope>
    </dependency>               
    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi</artifactId>
        <version>3.17</version>
    </dependency>
    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi-ooxml-schemas</artifactId>
        <version>3.17</version>
    </dependency>
    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi-ooxml</artifactId>
        <version>3.17</version>
    </dependency>
</dependencies>

<build>
    ...
</build>

我想将依赖打包到运行mvn clean package后创建的jar文件中。使用终端构建应用程序,而不是使用 eclipse 构建它。

【问题讨论】:

  • 你使用maven,对吗?如果是的话,把你的 pom.xml 文件放在这里 :)
  • @DinaBogdan pom paste。

标签: spring-boot


【解决方案1】:

请将此配置用于您的 pom.xml 中的构建部分。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-06-24
    • 1970-01-01
    • 2016-06-26
    • 2015-06-09
    • 2015-03-14
    • 2017-09-19
    • 2016-12-18
    • 2018-03-05
    相关资源
    最近更新 更多