IDEA中利用MAVEN制作和打包普通可执行应用(非SprintBoot的WEB应用)
我使用IDEA也就半年,开发中常常会遇到一些问题,例如用IDEA编写普通的可执行程序;
之前使用Eclipse编写一个可执行的JAVA程序,然后导出打包,非常方便;
但是我呢,想在 IDEA 中用Maven做一个可执行程序,毕竟之前也没有在 Eclipse 中经常使用 Maven,所以遇到了一些问题
首先说 在 IDEA 中用Maven做一个可执行程序
具体你可以参考:
https://www.cnblogs.com/alexgl2008/articles/12204484.html
我按照上面的步骤,初步写好一个可以用Mybatis连接数据库的小程序,或者你自己百度
本文主要是讲有关打包的,一般来说打包基本步骤:
https://www.cnblogs.com/alexgl2008/articles/12205496.html
可是就是执行时,会出现提示“没有主清单属性”
其实说实话,我一开始就知道问题是错哪了,我主要想看看网上的解决方案;
我先说答案:
只要找到导出的包,用winrar解压,你可以看到主Jar文件中就有 META-INF 文件夹,进去可以看到 MANIFEST.MF ,其实这个就是引导JAR文件执行的引导文件;
很简单,你只要编辑这个文件,在第二行,加入:
Main-Class: com.####.####.####
上面的###是你对应的主程序类名称;
(如果你不会,先解压缩这个MANIFEST.MF文件,编辑完了,再覆盖回去即可)
覆盖后,直接执行,一切OK。
这种解决方案不是最终解决方案,原理其实就是MAVEN没有把这段话加入到 MANIFEST.MF文件中,网上的文章大多是以下两种:
第一种:
加入例如以下代码,主要是用 maven-jar-plugin ,我尝试过,对于我用IDEA制作的普通应用程序,不起作用
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.6<version>
<configuration>
<archive>
<manifest>
<mainClass>xx.xx.xx</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
在 manifest 里面加入 <addClasspath>true</addClasspath> 也不行
还有一种,我也尝试过,还是不行;
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>1.2.1</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<transformers>
<transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<mainClass>XXXX.XXXX.XXXXX</mainClass>
</transformer>
</transformers>
</configuration>
</execution>
</executions>
</plugin>
直到我看到一个网友说:
注意不要放到main/java目录下,否则打成的jar中META-INF/MANIFEST.MF不含有Main-Class信息
指定META-INF/MANIFEST.MF的路径为src下
我操,豁然开朗;
使用第一种配置打包,用WINRAR打开JAR看,MANIFEST.MF中,Main-Class 赤裸裸的出现在我面前了。
这一番折腾,太骚了。弄了快两个小时,才找到原因;
这算是 IDEA 的一个漏洞吧?
IDEA中利用MAVEN制作和打包普通可执行应用(非SprintBoot的WEB应用)的更多相关文章
- 在Eclipse中利用maven整合搭建ssm框架
		
首先说明用到的框架: spring + springMVC + mybatis 构建工具:maven 开发工具:eclipse 开发环境:win10 java版本:jdk1.8 ...
 - 利用maven将项目打包成一个可以运行的独立jar包
		
目标:希望把Java项目打包成一个完整的jar包,可以独立运行,不需要再依赖其他jar包. 我们在用eclipse中mvn创建mvn项目的时候,选择非webapp,会默认的以jar打包形式,如下图: ...
 - idea 中利用maven创建java web 项目
		
转自:http://www.linuxidc.com/Linux/2014-04/99687.htm 本文主要使用图解介绍了使用IntelliJ IDEA 12创建Maven管理的Java Web项目 ...
 - elcipse 中利用maven创建web工程
		
如何创建: http://huxiaoheihei.iteye.com/blog/1766986 遇到的问题: 1: 如果spring MVC配置了 <servlet> <servl ...
 - flash8中利用遮罩制作图片切换效果
		
http://www.56.com/w73/play_album-aid-8642763_vid-NDY5ODU2Mzg.html
 - 用maven按环境打包SpringBoot的不同配置文件
		
利用maven按环境打包SpringBoot的不同配置文件 application-dev.properties对应开发环境 application-test.properties对应测试环境 app ...
 - 通过idea 打包 spring maven项目打包为可执行jar包
		
用assembly打包一直报错: shangyanshuodeMacBook-Pro:target shangyanshuo$ java -jar jobscrawler-1.0-SNAPSHOT-j ...
 - Idea开发环境中搭建Maven并且使用Maven打包部署程序
		
1.配置Maven的环境变量 a.首先我们去maven官网下载Maven程序,解压到安装目录,如图所示: b.配置M2_HOME的环境变量,然后将该变量添加到Path中 备注:必须要有JAVA_HOM ...
 - 利用Maven打包时,如何包含更多的资源文件
		
首先,来看下MAVENx项目标准的目录结构: 一般情况下,我们用到的资源文件(各种xml,properites,xsd文件等)都放在src/main/resources下面,利用maven打包时,ma ...
 
随机推荐
- 在javaweb中从servlet端向jsp端传递数据的方法
			
1.servlet端: request.setAttribute("student", student)://向请求域中添加名称为student,内容为student中内容的数据( ...
 - Scrapy 分布式爬取
			
由于受到计算机能力和网络带宽的限制,单台计算机运行的爬虫咋爬取数据量较大时,需要耗费很长时间.分布式爬取的思想是“人多力量大”,在网络中的多台计算机同时运行程序,公童完成一个大型爬取任务, Scrap ...
 - GO判断输入
			
判断用户密码输入: package main import"fmt" func main(){ var a int var b int fmt.Printf("请输入密码 ...
 - 3 Struts2的常见配置解析
			
1 package标签的相关配置 package标签:包,与Java中的包概念不一致.旨在更好的管理actionpackage标签的属性: name : 包的名称,在一个项目不重名即可,无具体含义 ...
 - gradle 打包所有依赖  Invalid signature file digest for Manifest main attributes(转)
			
1.打包所有依赖: // 指定main函数的类 jar { manifest { attributes "Main-Class": "com.baeldung.fatja ...
 - Python 之网络编程之socket(2)黏包现象和socketserver并发
			
一:黏包 ###tcp协议在发送数据时,会出现黏包现象. (1)数据粘包是因为在客户端/服务器端都会有一个数据缓冲区, 缓冲区用来临时保存数据,为了保证能够完整的接收到数据,因此缓冲区 ...
 - 特约稿件 Java并发教程(Oracle官方资料)
			
本文是Oracle官方的Java并发相关的教程,感谢并发编程网的翻译和投递. (关注ITeye官微,随时随地查看最新开发资讯.技术文章.) 计算机的使用者一直以为他们的计算机可以同时做很多事情.他 ...
 - idea2019 3.3最新版本破解安装教程
			
直接给上神秘地址得了:(应该都可以破解) https://www.jianshu.com/p/c7bdc5819d31
 - LibreOJ #2006. 「SCOI2015」小凸玩矩阵
			
想了挺久没想出来,一看题解恍然大悟.一个数对应一行和一列,二分答案,凡是小于等于答案的就连边.如果满足能够取出 \(n - k + 1\) 个不比二分中点 \(mid\) 大的数,那么r = mid, ...
 - pytorch梯度下降法讲解(非常详细)
			
pytorch随机梯度下降法1.梯度.偏微分以及梯度的区别和联系(1)导数是指一元函数对于自变量求导得到的数值,它是一个标量,反映了函数的变化趋势:(2)偏微分是多元函数对各个自变量求导得到的,它反映 ...