- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我使用不同的方式通过idea获取jar。但是当我输入java -jar ****.jar
时。它告诉我没有主要的manifest属性,在quark-common中.jar
这是我的项目的网址:https://github.com/ZYao123/JavaQuarkBBS
。该项目有5个模块。它们可以实现我的想法,但是当我想打包一个jar用于linux。问题就出现了。该模块依赖于quark-parent
。quark-parent
只有一个pom.xml
作为公共(public)包。我已将其添加到 quark-common
的 pom.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/
因此,当使用“智能”时,当我想创建一个类时,它还会创建另外两个函数(不确定我是否正确调用了它们): class main { private: /* data */ public: m
我确实知道 C/C++ 和 Java 中使用的 main() 方法,但由于 main() 是用户定义的(因为 main() 中的代码是由用户定义的,它不能是预定义的方法) & 在 C/C++ 中,ma
这个问题在这里已经有了答案: What is a NullPointerException, and how do I fix it? (12 个答案) 关闭 7 年前。 我意识到这是一个常见错误,
您好,我是 jquery 和 javascript 的新手。我想做的是我有 3 个独立的 Main-Divs ex main-div1, main-div2, main-div-3 它们都是一个大盒子
我知道以前曾有人问过有关此错误的问题,但我的情况与其他人不同。我正在编写计算数据集的平均值、方差和标准差的代码。编译代码时我没有收到任何错误,但是当我尝试运行代码时,我收到如下错误: Exceptio
这个问题已经有答案了: What should main() return in C and C++? (19 个回答) Why is the type of the main function in
无效的输入流不起作用 - 每次我给出负的月份值时,它都会返回此异常。 代码: import java.util.Scanner; public class Main { public stat
我在 main() 中调用 main(),递归 10 次。现在,在使用 gdb (bt/backtrace) 进行调试时,我没有看到 main() 的多个帧。为什么? #include int mai
我有一个类 - A - 没有方法,只有主要方法。 在其他类(class) - B - 我需要调用那个 main.做什么最好?从使用的资源、时间和功耗以及效率来看? 从类 A 创建一个“a”对象并执行
鉴于 documentation以及对 earlier question 的评论,根据要求,我制作了一个最小的可重现示例,演示了这两个语句之间的区别: my %*SUB-MAIN-OPTS = :na
我有一个在 main 中声明并初始化的数组,名为 Edges。 我还在 main 中声明了一些访问名为 Edges 的数组的函数。 代码编译并运行。 为什么它有效?我认为 main 中声明的变量不是全
如果定义内容主要部分的最具语义性和可访问性的方式是标准,那么使用 ARIA 地标似乎是多余的元素。正在添加 role="main"到元素真的有必要吗? 最佳答案 并非所有现代浏览器都已经映射了 ari
我是 C 语言的新手(6 小时前开始),我知道有大量的在线引用资料,我应该(并且将会)详细查看,但现在,我有紧急情况需要帮助。我有一个包含以下文件的项目文件夹: boundary_val.c boun
我正在审查许多不同的 Java 程序,并试图弄清楚如何只更新一次而不是两次更新对程序名称的引用。有没有办法在单个终端命令中使用变量? :S 我试图改进的命令是这样的形式: javac Main.jav
我已经创建了一个工作线程, Thread thread= new Thread(runnable); thread.start(); 我在工作线程中打印这个; Log.d("SessionTh
import java.awt.*; import java.awt.event.*; import java.io.*; import java.lang.*; public class Main
这是我的 Main.java,它位于服务器套接字“get().logger().tag();”之后的部分我已经在实例中添加了所有这些,我真的不确定它出了什么问题。 public class Main
我在 http://www.hackerearth.com/problem/algorithm/roys-life-cycle/ 上测试了我的程序。但是,我总是收到错误:在类 ActivityTime
我想要一个脚本来运行从模块导出的子例程,导出的子程序在脚本中作为 MAIN 运行。该子例程做了我想做的所有事情,除了它返回结果而不是打印它。 RUN-MAIN 似乎实现了我的大部分目标,但我不确定如何
java中有什么具体原因吗,main方法应该是小写字母 是的“主要”和“主要” 编译完成 public class ManiMethod { public static void main(S
我是一名优秀的程序员,十分优秀!