gpt4 book ai didi

java - 将 Spring Boot 应用程序作为 jar 执行会给出 "no main manifest attribute"

转载 作者:行者123 更新时间:2023-12-02 10:23:55 25 4
gpt4 key购买 nike

我使用不同的方式通过idea获取jar。但是当我输入java -jar ****.jar时。它告诉我没有主要的manifest属性,在quark-common中.jar

这是我的项目的网址:https://github.com/ZYao123/JavaQuarkBBS。该项目有5个模块。它们可以实现我的想法,但是当我想打包一个jar用于linux。问题就出现了。该模块依赖于quark-parentquark-parent只有一个pom.xml作为公共(public)包。我已将其添加到 quark-commonpom.xml 上,但它们无法工作。我知道发生这种情况是因为它找不到 main 方法,但是我应该如何修复它?

<parent>
<artifactId>quark-parent</artifactId>
<groupId>com.quark</groupId>
<version>1.0-SNAPSHOT</version>
<relativePath>../quark-parent/pom.xml</relativePath>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>com.quark</groupId>
<artifactId>quark-common</artifactId>
<packaging>jar</packaging>

<build>
<finalName>quark-common</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>1.5.6.RELEASE</version>
</plugin>
</plugins>
</build>

META-INF/MANIFEST.MF:

Manifest-Version: 1.0
Class-Path: spring-tx-4.3.10.RELEASE.jar guava-19.0.jar hibernate-jpa-
2.1-api-1.0.0.Final.jar spring-expression-4.3.10.RELEASE.jar tools.ja
r dom4j-1.6.1.jar spring-boot-starter-data-jpa-1.5.6.RELEASE.jar spri
ng-boot-starter-cache-1.5.6.RELEASE.jar spring-aspects-4.3.10.RELEASE
.jar druid-1.0.29.jar spring-orm-4.3.10.RELEASE.jar spring-context-4.
3.10.RELEASE.jar javassist-3.21.0-GA.jar slf4j-api-1.7.25.jar spring-
boot-starter-aop-1.5.6.RELEASE.jar nekohtml-1.9.22.jar spring-boot-st
arter-jdbc-1.5.6.RELEASE.jar spring-data-jpa-1.11.6.RELEASE.jar antlr
-2.7.7.jar log4j-over-slf4j-1.7.25.jar jackson-annotations-2.8.0.jar
jul-to-slf4j-1.7.25.jar jconsole.jar javax.transaction-api-1.2.jar sp
ring-boot-starter-1.5.6.RELEASE.jar spring-boot-1.5.6.RELEASE.jar log
back-classic-1.1.11.jar spring-data-commons-1.13.6.RELEASE.jar fastjs
on-1.2.16.jar spring-aop-4.3.10.RELEASE.jar spring-beans-4.3.10.RELEA
SE.jar spring-core-4.3.10.RELEASE.jar xercesImpl-2.11.0.jar spring-co
ntext-support-4.3.10.RELEASE.jar snakeyaml-1.17.jar hibernate-commons
-annotations-5.0.1.Final.jar xml-apis-1.4.01.jar jboss-logging-3.3.1.
Final.jar logback-core-1.1.11.jar aspectjweaver-1.8.10.jar ehcache-2.
10.4.jar jandex-2.0.0.Final.jar hibernate-entitymanager-5.0.12.Final.
jar jcl-over-slf4j-1.7.25.jar spring-boot-autoconfigure-1.5.6.RELEASE
.jar tomcat-jdbc-8.5.16.jar spring-boot-starter-logging-1.5.6.RELEASE
.jar hibernate-core-5.0.12.Final.jar mysql-connector-java-5.1.43.jar
spring-jdbc-4.3.10.RELEASE.jar tomcat-juli-8.5.16.jar
Main-Class: com.quark.common.CommonApplication

最佳答案

所以我在本地构建了您的项目,并在 quark-common.jar 中 list 如下:

    Manifest-Version: 1.0
Archiver-Version: Plexus Archiver
Created-By: Apache Maven 3.5.2
Built-By: ...
Build-Jdk: 10.0.2

它没有主类,也缺乏其他属性。原因是您不需要 spring-boot-maven-plugin 的配置。它应该是这样的:

  . . .
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>1.5.6.RELEASE</version>
<executions>
<execution>
<id>repackage</id>
<goals>
<goal>repackage</goal>
</goals>
<configuration>
<classifier>exec</classifier>
</configuration>
</execution>
</executions>
. . .

结果 MANIFEST.MF 类似于:

Manifest-Version: 1.0
Archiver-Version: Plexus Archiver
Created-By: Apache Maven 3.5.2
Built-By: ...
Build-Jdk: 10.0.2
Main-Class: org.springframework.boot.loader.JarLauncher
Start-Class: com.quark.common.CommonApplication
Spring-Boot-Version: 1.5.6.RELEASE
Spring-Boot-Classes: BOOT-INF/classes/
Spring-Boot-Lib: BOOT-INF/lib

然后使用 java -jar quark-common-exec.jar 运行应用程序(它会创建一个带有 exec 扩展名的附加可执行 Artifact )。

希望这对您有帮助。

更新

回答你的问题:

我想发生这种情况是因为您正在使用 spring-boot-dependency bom (它提供了)。在您的其他项目中,您使用了 spring-boot-starter-parent 作为模块的父级。像这样:

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

所以它具有所有必需的插件配置。而 spring-boot-dependency bom 则没有,它只提供依赖项和插件的版本。

关于java - 将 Spring Boot 应用程序作为 jar 执行会给出 "no main manifest attribute",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54121894/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com