我使用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应用)的更多相关文章

  1. 在Eclipse中利用maven整合搭建ssm框架

    首先说明用到的框架: spring  +  springMVC  +  mybatis 构建工具:maven 开发工具:eclipse 开发环境:win10      java版本:jdk1.8    ...

  2. 利用maven将项目打包成一个可以运行的独立jar包

    目标:希望把Java项目打包成一个完整的jar包,可以独立运行,不需要再依赖其他jar包. 我们在用eclipse中mvn创建mvn项目的时候,选择非webapp,会默认的以jar打包形式,如下图: ...

  3. idea 中利用maven创建java web 项目

    转自:http://www.linuxidc.com/Linux/2014-04/99687.htm 本文主要使用图解介绍了使用IntelliJ IDEA 12创建Maven管理的Java Web项目 ...

  4. elcipse 中利用maven创建web工程

    如何创建: http://huxiaoheihei.iteye.com/blog/1766986 遇到的问题: 1: 如果spring MVC配置了 <servlet> <servl ...

  5. flash8中利用遮罩制作图片切换效果

    http://www.56.com/w73/play_album-aid-8642763_vid-NDY5ODU2Mzg.html

  6. 用maven按环境打包SpringBoot的不同配置文件

    利用maven按环境打包SpringBoot的不同配置文件 application-dev.properties对应开发环境 application-test.properties对应测试环境 app ...

  7. 通过idea 打包 spring maven项目打包为可执行jar包

    用assembly打包一直报错: shangyanshuodeMacBook-Pro:target shangyanshuo$ java -jar jobscrawler-1.0-SNAPSHOT-j ...

  8. Idea开发环境中搭建Maven并且使用Maven打包部署程序

    1.配置Maven的环境变量 a.首先我们去maven官网下载Maven程序,解压到安装目录,如图所示: b.配置M2_HOME的环境变量,然后将该变量添加到Path中 备注:必须要有JAVA_HOM ...

  9. 利用Maven打包时,如何包含更多的资源文件

    首先,来看下MAVENx项目标准的目录结构: 一般情况下,我们用到的资源文件(各种xml,properites,xsd文件等)都放在src/main/resources下面,利用maven打包时,ma ...

随机推荐

  1. java 并发线程锁

     1.同步和异步的区别和联系 异步,执行完函数或方法后,不必阻塞性地等待返回值或消息,只需要向系统委托一个异步过程,那么当系统接收到返回 值或消息时,系统会自动触发委托的异步过程,从而完成一个完整的流 ...

  2. BurpSuite pro v2.0.11版

    下载地址: 链接:https://pan.baidu.com/s/1CgXgK_lV2OWjRT364hvfog 提取码:gvxy BurpSuite介绍 借用一下吾爱破解文章中的描述信息:https ...

  3. Session共享解决方案

    使用nginx做的负载均衡添加一个ip_hash配置 一.开两个Tomcat写测试程序 @WebServlet("/nginxSessionServlet") public cla ...

  4. 最简单、最常用的一些Git命令

    ---------------------------------------------------------------------------------------------------- ...

  5. Linux centosVMware Tomcat介绍、安装jdk、安装Tomcat

    一.Tomcat介绍 Tomcat是Apache软件基金会(Apache Software Foundation)的Jakarta项目中的一个核心项目,由Apache.Sun和其他一些公司及个人共同开 ...

  6. YUV 和 YCbCr 辨析

    YCbCr或Y'CbCr 是在世界数字组织视频标准研制过程中作为ITU-R BT1601 建议的一部分, 其实是YUV经过缩放和偏移的翻版. 通常会用于影片中的影像连续处理,或是数字摄影系统中. 其中 ...

  7. matlab练习程序(龙格库塔法)

    非刚性常微分方程的数值解法通常会用四阶龙格库塔算法,其matlab函数对应ode45. 对于dy/dx = f(x,y),y(0)=y0. 其四阶龙格库塔公式如下: 对于通常计算,四阶已经够用,四阶以 ...

  8. 「ZJOI2007」捉迷藏

    题目描述 给出一棵\(N\)个有色(黑白,黑色对应关灯,白色对应开灯)节点的树以及\(M\)次操作,每次操作将改变一个节点的颜色或者求出树上最远的两个白点距离 基本思路 \(60pts\)做法 这道题 ...

  9. 【剑指Offer面试编程题】题目1515:打印1到最大的N位数--九度OJ

    题目描述: 给定一个数字N,打印从1到最大的N位数. 输入: 每个输入文件仅包含一组测试样例. 对于每个测试案例,输入一个数字N(1<=N<=5). 输出: 对应每个测试案例,依次打印从1 ...

  10. redis api-set