当前位置: 首页 > 知识库问答 >
问题:

作为jar启动Spring引导应用程序时的异常

濮俊美
2023-03-14

我使用maven spring启动插件创建了一个jar,并尝试使用java-jar应用程序运行jar。jar。主文件是用SpringBoot配置的,当我尝试打包它时,启动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。我试着在网上寻找各种解决方案,但失败的是,没有一个对我有效。我检查了NoClassDefinitionFound和PackageDependencyJAR的答案,但它不起作用,每次都会出现相同的错误。下面是我的pom的构建部分。有人能帮忙吗?

当前配置

<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"

<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清洁包后创建的jar文件中。使用终端来构建应用程序,而不是使用eclipse来构建它。

共有1个答案

钱哲茂
2023-03-14

请在pom中使用此构建配置部分。xml。

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>
 类似资料:
  • 以下是错误: 下面是我的pom.xml文件: 这是我的主课:

  • 有一个Spring应用程序“A”打包为JAR(带有maven),应用程序“A”的POM文件包含一些定义的特定maven依赖项。 在另一个打包为JAR的spring boot应用程序“B”中,添加了应用程序“A”的依赖项,但在执行“B”时,它对应用程序“A”中提到的依赖项抛出了几个ClassNotFound/NoClassDef错误。 注意-应用程序“A”不是一个引导项目。这是一个简单的用maven

  • 问题内容: 我可以使用Maven编译并启动Spring项目: 但是,当我使用(包括)将所有jar组合到一个文件中时,在执行过程中总是会得到一个: 我还尝试将架构定义(即等)直接附加到类路径,但是没有成功。 问题答案: Spring命名空间处理程序使用文件和解析。由于具有这些名称的文件存在于不同的Spring jar中,因此可能只有其中一个保留在目标jar之后。 也许您可以手动合并这些文件,然后以某

  • 我正在尝试运行一个Spring Boot应用程序。我从教程中下载了一段代码,这样我就知道这段代码可以工作。当我运行我的jar文件时,它看起来就像我在8080端口上运行的应用程序,但我仍然得到404对于任何URL来说,我从来没有得到spring白色标签页面。我检查了8080端口上没有任何其他东西在运行,并且服务器已经启动并运行。 我不知道为什么我的申请没有反应。 } http://maven.apa

  • 我使用的是版本:2.1.6.在我的pom.xml-dependencies中发布form Spring Boot。为了连接到我的数据库,我在application.properties中放了以下内容: 检查postgresql中的连接量时,使用:

  • 我需要启动android前台服务,并在设备启动时从服务启动活动。我广泛地搜索了web和stackoverflow并尝试了不同的建议,但非常奇怪的是,我不能使这个功能工作。 我不明白我做错了什么。 下面是来自我的项目的代码和清单文件的内容。 我做错了什么,如何解决它,在大多数android设备上工作的功能? 这是我的AndroidManifest.xml: 这是我的austostart.java: