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

用Maven/Spring/Eclipse制作可执行的jar

柳鸿博
2023-03-14

所以我已经尝试了这些:

    < li >在pom.xml中添加插件 < li >删除. m2文件夹以在作为Maven版本运行时清理包... < li >运行mvn clean(在eclipse IDE中的项目文件夹上) < li >关闭并再次运行eclipse。

事情是这样的:当我在eclipse上将主类作为Java应用程序运行时,eclipse控制台显示应用程序以spring logo启动。但是当我让Maven构建或提取项目时。jar文件并尝试做java -jar时,出现一个异常:

线程“main”Java . lang . noclassdeffounderror:org/spring framework/boot/spring application at br . com . bancodigimais . keypaypagamentos . portalpos . portalposapplication . main(portalposapplication . Java:34)中的异常由以下原因引起:Java . lang . classnotfoundexception:org . spring framework . boot . spring application at Java . base

为什么会发生这种情况?我的意思是。。。有可能使这个项目将jar构建为可执行文件吗?当您使用java -jar命令并看到Spring徽标启动应用程序等时...

pom.xml文件:

<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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>Portal-POS</groupId>
    <artifactId>Portal-POS</artifactId>
    <packaging>jar</packaging>
    <version>0.0.1-SNAPSHOT</version>
    <build>
        <sourceDirectory>src</sourceDirectory>
        <plugins>
            <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.1</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>            
                </configuration>
            </plugin>
     <plugin> 

                <!-- Building an executable jar -->

                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <version>3.1.0</version>
                <configuration>
                  <archive>
                    <manifest>

                    <!-- give full qualified name of your main class-->
                      <mainClass>br.com.bancodigimais.keypaypagamentos.portalpos.PortalPosApplication</mainClass>

                    </manifest>
                  </archive>
                </configuration>
    </plugin>
 
            
        </plugins>
    </build>

    <dependencies>

        <dependency>
            <groupId>com.liferay</groupId>
            <artifactId>com.liferay.gradle.plugins.jasper.jspc</artifactId>
            <version>2.0.5</version>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-log4j2</artifactId>
            <version>2.1.3.RELEASE</version>
            <exclusions>
                <exclusion>
                    <groupId>org.apache.logging.log4j</groupId>
                    <artifactId>log4j-slf4j-impl</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

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

        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-core</artifactId>
            <version>2.9.7</version>
        </dependency>

        <dependency>
            <groupId>org.postgresql</groupId>
            <artifactId>postgresql</artifactId>
            <version>42.2.5</version>
        </dependency>

        <dependency>
            <groupId>joda-time</groupId>
            <artifactId>joda-time</artifactId>
            <version>2.10.1</version>
        </dependency>

        <dependency>
            <groupId>com.google.code.gson</groupId>
            <artifactId>gson</artifactId>
            <version>2.8.5</version>
        </dependency>


        <dependency>
            <groupId>com.auth0</groupId>
            <artifactId>java-jwt</artifactId>
            <version>3.4.0</version>
        </dependency>

        <dependency>
            <groupId>net.sf.supercsv</groupId>
            <artifactId>super-csv-java8</artifactId>
            <version>2.4.0</version>
        </dependency>

        <dependency>
            <groupId>net.sf.jasperreports</groupId>
            <artifactId>jasperreports</artifactId>
            <version>6.7.0</version>
        </dependency>

        <dependency>
            <groupId>org.codehaus.groovy</groupId>
            <artifactId>groovy-all</artifactId>
            <version>2.3.6</version>
        </dependency>

        <dependency>
            <groupId>com.lowagie</groupId>
            <artifactId>itext</artifactId>
            <version>2.1.7</version>
        </dependency>

        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-ooxml</artifactId>
            <version>4.0.1</version>
        </dependency>

        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi</artifactId>
            <version>4.0.1</version>
        </dependency>

        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-email</artifactId>
            <version>1.5</version>
        </dependency>

        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger2</artifactId>
            <version>2.9.2</version>
        </dependency>

        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger-ui</artifactId>
            <version>2.9.2</version>
        </dependency>

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.10</version>
            <scope>provided</scope>
        </dependency>


        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <version>2.1.3.RELEASE</version>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
            <version>2.1.3.RELEASE</version>
        </dependency>

        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-lang3</artifactId>
            <version>3.9</version>
        </dependency>

        <dependency>
            <groupId>org.codehaus.jackson</groupId>
            <artifactId>jackson-core-asl</artifactId>
            <version>1.9.13</version>
        </dependency>

        <dependency>
            <groupId>org.codehaus.jackson</groupId>
            <artifactId>jackson-mapper-asl</artifactId>
            <version>1.9.13</version>
        </dependency>

        <dependency>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpmime</artifactId>
            <version>4.5.10</version>
        </dependency>

        <dependency>
            <groupId>javax.ws.rs</groupId>
            <artifactId>javax.ws.rs-api</artifactId>
            <version>2.1.1</version>
        </dependency>

        <dependency>
            <groupId>org.apache.cxf</groupId>
            <artifactId>cxf-core</artifactId>
            <version>3.3.6</version>
        </dependency>

        <dependency>
            <groupId>commons-httpclient</groupId>
            <artifactId>commons-httpclient</artifactId>
            <version>3.1</version>
        </dependency>
    </dependencies>
</project>

共有1个答案

薛欣德
2023-03-14

maven-jar插件将创建一个只包含应用程序类和资源的jar文件。jar文件将不包含运行应用程序所需的其他代码,例如包含classorg.springframework.Boot.SpringApplication的SpringBoot代码。为了实现这一点,您需要使用java-jar列出所有依赖项jar文件

Spring Boot通过将应用程序代码和所有依赖的jar打包成一个jar文件来支持可执行的jar文件。它还创建< code >清单。MF条目,所以您不需要在< code>pom.xml中进行配置。在Spring Boot文档和Spring Boot Maven插件文档中有更多关于这个的信息。

 类似资料:
  • 我正在尝试使用“Spring Boot Maven Plugin”制作一个可执行的jar文件。 通常,我可以通过设置“重新打包”来执行此操作。目标在我的pom.xml文件是这样设置的。 我的构建命令如下: 这是可行的,但是我想在jar文件中包含META-INF/build-info.properties。 通过拥有这个文件,我可以在我的springboot应用程序中检查构建信息,所以我想拥有它。

  • 主要内容:执行预置 Maven 命令,执行自定义 Maven 命令在 Eclipse 中新建和导入 Maven 项目后,接下来就可以执行 Maven 命令对这些项目进行构建了。当然,您依然可以在命令行中执行 Maven 命令进行构建,不过本节将介绍如何在 Eclipse 中直接执行 Maven 命令。 执行预置 Maven 命令 在项目或其 pom.xml 上单击鼠标右键,选择 Run As 选项,就能够看到如图 1 的菜单。 图1:Eclipse 预置 Mav

  • 我试图用pyinstaller创建python脚本的可执行文件,但它不起作用。 如果我从终端运行exe文件,我得到这些错误: 我在项目的虚拟环境中使用pip安装了pyInster。 我将感谢任何帮助。 先谢谢你。

  • 我试图用scala和Maven创建可执行jar。我正在使用maven-scala-plugin和maven-assembly-plugin,但在我看来,汇编插件被忽略了。我得到没有依赖项的jar和包含没有主类行的manifest。

  • 问题内容: 我有一个基于Maven的Spring-WS客户端项目,我希望将其打包为一个jar。在日食中,一切正常运行。当我尝试将其打包为可执行jar时,由于Spring jar不包含在我的应用程序jar中,因此出现ClassNotFound异常。 因此,我添加了maven-shade-plugin以将我的所有依赖项都包含在应用程序jar中。当我查看我的应用程序jar时,会看到包含的所有依赖项中的所

  • 我知道其他线程已经回答了这个问题,但没有一个对我有效,我尝试从eclipse创建一个可执行的jar文件,但这有其他问题。