我使用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. laravel 排除csrf验证

    中(*排除所有路由)

  2. POJ 2104 主席树模板题

    #include <iostream> #include <cstdio> #include <algorithm> int const maxn = 200010 ...

  3. flask view

    flask view 1.      flask view 1.1.    @route 写个验证用户登录的装饰器:在调用函数前,先检查session里有没有用户 from functools imp ...

  4. 吴裕雄--天生自然PythonDjangoWeb企业开发:解决ModuleNotFoundError: No module named 'config'报错

    使用创建完模块应用之后python manage.py startapp test_app,您应该进入settings.py并将其注册到

  5. Java 并发锁

    Java 中的锁 阻塞锁.可重入锁.读写锁.互斥锁.悲观锁.乐观锁.公平锁.偏向锁.对象锁.线程锁.锁粗化.锁消除.轻量级锁.重量级锁.信号量.独享锁.共享锁.分段锁 一.常见的锁 synchroni ...

  6. mybaits requestMap与requestType,以及对应的注解

    有的时候不喜欢用xml配置文件,但是xml配置文件的开发使用简单,自己经常要用到: 因为代码维护的缘故,有的时候看别人的代码,可能存在大量的mappper文件,也不是你想用注解就用注解的: 下面我还是 ...

  7. ls命令与cd命令

    ls命令用于显示文件目录列表,当使用ls命令时,默认显示的只有非隐藏文件或文件夹(隐藏文件在linux中前面有 ' . ' ),当不加参数时,显示当前目录. 1.ls命令语法 ls [参数][目标文件 ...

  8. Android Studio的HAXM不支持虚拟机

    因为我的计算机是服务器,不支持虚拟机,所以报这个错了. 解决方式是直接连接物理手机,打开USB调试,安装驱动,运行项目即可.

  9. [Linux] day04——Linux 入门

    Linux 入门 =================Gnome 基于GTK图形库 速度快 稳定性好 专注与桌面本身 偏商务 RedHat企业版默认桌面KDE 基于QT 速度慢 软件多 习惯接近win ...

  10. The Google File System中文版

    译者:alex 摘要 我们设计并实现了Google GFS文件系统,一个面向大规模数据密集型应用的.可伸缩的分布式文件系统.GFS虽然运行在廉价的普遍硬件设备上,但是它依然了提供灾难冗余的能力,为大量 ...