在JAVA中将class文件编译成jar文件包,运行提示没有主清单属性
在JAVA中将class文件编译成jar文件包,运行提示没有主清单属性
Maven 项目生成jar运行时提示“没有主清单属性”
新建了一个Maven的项目,mvn compile和mvn package后生成了jar文件,然后直接到target目录下去执行Java -jar xxx.jar命令运行jar包时出现了“xxx.jar没有主清单属性”的错误提示。
根据我的经验,肯定是没有找到入口类(即main函数所在的类),在pom.xml里面加上入口类的配置就好了!第一次直接用maven来打包jar,记录一下。
关于可执行程序(需要指定一个 main 类)打 jar 包就没这么方便了,我们需要考虑以下几个问题:
- 配置文件需要打进 jar 包;
- 需要指定 main 入口类;
- 所依赖的第三方库也要打进 jar 包;
- 只有同时满足以上三点,我们才可以直接使用 java -jar swiftonrsa-1.0.0.jar 命令成功执行该程序。
2.1 配置文件打包不需要额外关注
只要你项目所依赖的配置文件都按照 maven 规范放对位置(src/main/resources),那么打好的 jar 包就会把它们一起打包:
- 但是这样打好的 jar 包既没有指定 main 入口类,也没有将依赖包打进来,我们运行它:
- 提示"swiftonrsa-1.0.0.jar中没有主清单属性",我们查看打好 jar 包下 META-INF 目录中的 MANIFEST.MF,其内容如下:
Manifest-Version: 1.0
Built-By: Defonds
Build-Jdk: 1.7.0_67
Created-By: Apache Maven 3.2.3
Archiver-Version: Plexus Archiver
确实没有指出 main 入口类。2.2 maven-assembly-plugin 插件
于是我们引入了 maven-assembly-plugin 插件,pom.xml 中加入如下代码:
- 确实没有指出 main 入口类。
2.2 maven-assembly-plugin 插件
于是我们引入了 maven-assembly-plugin 插件,pom.xml 中加入如下代码:
- <build>
- <plugins>
- <plugin>
- <artifactId>maven-assembly-plugin</artifactId>
- <configuration>
- <appendAssemblyId>false</appendAssemblyId>
- <descriptorRefs>
- <descriptorRef>jar-with-dependencies</descriptorRef>
- </descriptorRefs>
- <archive>
- 确实没有指出 main 入口类。
- 提示"swiftonrsa-1.0.0.jar中没有主清单属性",我们查看打好 jar 包下 META-INF 目录中的 MANIFEST.MF,其内容如下:
在JAVA中将class文件编译成jar文件包,运行提示没有主清单属性的更多相关文章
- 170803、springboot jar包启动提示没有主清单属性
问题:SpringBoot打包成jar后运行提示没有主清单属性 解决: 补全maven中的bulid信息 <plugin> <groupId>org.springframewo ...
- IDEA编译的JAR包运行出现“没有主清单属性”
运行编译好的包出现: 解决方案就是: 确保MANIFEST.MF文件在src/main/resources/META_INF/而不是src/main/java/META_INF/
- 运行jar提示“没有主清单属性”的解决方法
以下记录的是我export jar包后运行遇到问题的解决方法,如有错误,欢迎批评指正. 1.运行导出jar包,提示"没有主清单属性" 2.回想自己导出jar的操作是否有误,重新ex ...
- C#.NET常见问题(FAQ)-如何将cs文件编译成dll文件 exe文件 如何调用dll文件
比如我要把TestDLL.cs文件编译成dll文件,则在命令提示符下,输入下面的命令,生成的文件为TestDLL.dll csc /target:library TestDLL.cs 注意前提是你安装 ...
- 用gulp把less文件编译成css文件
第一次使用gulp构建工具,使用gulp将.less文件编译成.css文件并输出.根据视频做了笔记.提供新手和自己以后做参考. HTML文件 <!DOCTYPE html> <htm ...
- C#.NET如何将cs文件编译成dll文件 exe文件 如何调用dll文件
比如我要把TestDLL.cs文件编译成dll文件,则在命令提示符下,输入下面的命令,生成的文件为TestDLL.dll csc /target:library TestDLL.cs 注意前提是你安装 ...
- java运行jar命令提示没有主清单属性和找不到主类
推荐一个java运行jar命令提示没有主清单属性的百度经验的链接:https://jingyan.baidu.com/article/db55b60990f6084ba30a2fb8.html jav ...
- 将java文件编译成class文件
一般情况下,在myeclipse中保存java文件后会自动编译成class文件,但是这种情况只能编译当前工程的java文件,但是如果需要编译不是一个工程的java文件,比如在网上拷贝的java文件改如 ...
- xxx.jar或者xxx.war中没有主清单属性和spring-boot-maven-plugin的作用
因为springboot本身集成了tomcat插件,所以我们可以直接使用mvn clean package命令打成jar包或者war包,然后使java -jar xxx.jar 或者 java -ja ...
随机推荐
- 洛谷—— P1120 小木棍 [数据加强版]
https://www.luogu.org/problem/show?pid=1120 题目描述 乔治有一些同样长的小木棍,他把这些木棍随意砍成几段,直到每段的长都不超过50. 现在,他想把小木棍拼接 ...
- Android处理错误json数据
此前一直都没遇到也一直相信服务端返回的json数据基本是正确的,直到我们的android端一直崩溃,并在友盟上查到一直报如下的错误: com.google.gson.JsonSyntaxExcepti ...
- NEFU 118
其实一道公式题: n!中素数i的幂为: [n/i]+[n/i^2]+[n/i^3]+[n/i^4]+...... #include <iostream> #include <cstd ...
- 2015.04.15,外语,读书笔记-《Word Power Made Easy》 10 “如何讨论交谈习惯” SESSION 27
继续学习交谈习惯的单词,本大章节完成. 1. front and back - and uncles ventriloquist,从belly发声(venter, venris + loquor). ...
- 36.QT地图
widget.h #ifndef MAPWIDGET_H #define MAPWIDGET_H #include <QGraphicsView> #include <QLabel& ...
- kubernetes系列:(一)、kubeadm搭建kubernetes(v1.13.1)单节点集群
kubeadm是Kubernetes官方提供的用于快速部署Kubernetes集群的工具,本篇文章使用kubeadm搭建一个单master节点的k8s集群. 节点部署信息 节点主机名 节点IP 节点角 ...
- ubuntu软件卸载方法
一.查看软件包 1.查看已安装的软件包 dpkg --list 2.查看不知道要删除软件的具体名称 dpkg --get-selections | grep <软件相关名称> 二.卸载 1 ...
- HD-ACM算法专攻系列(17)——find your present (2)
题目描述: 源码: #include"iostream" #include"string" using namespace std; bool IsFirstH ...
- Git+VS2015修改提交代码以及解决冲突
第一步:前提我们已经讲代码从git上clone(可以看我的GIt篇)下来,创建自己的开发分支.我们在自己本地的分支上开发. 看到右下角有一个develop那是我自己建立的开发的分支,现在点击devel ...
- vue-cli安装步骤
vue-cli脚手架模板是基于node下的npm来完成安装的所以首先需要安装node 条件: node在4.以上,npm在3以上 安装 指令: 1.npm install -g vue-cli 在全 ...