文档章节

IDEA打包可运行jar

陈栋
 陈栋
发布于 2016/12/11 22:14
字数 713
阅读 34
收藏 1

转载连接:http://bglmmz.iteye.com/blog/2058785

背景: 

有时候,我们会用IDEA来开发一些小工具,需要打成可运行的JAR包;或者某些项目不是WEB应用,纯粹是后台应用,发布时,也需要打成可运行的JAR包。并且,如果依赖第三方jar时,又不希望第三方jar也打入最终的可运行jar包,并且还希望,组织下目录结构(如把第三方jar文件,放到最终可运行jar包的并行目录lib下)

 

开发环境

OS: Windows 8.1

JDK: 1.7.0

开发工具: IntelliJ IDEA 13.1.1

 

步骤:

1. 选中Java项目工程名称,在菜单中选择 File->project structure... (快捷键Ctrl+Alt+Shift+S)。



 

2. 在弹出的窗口中左侧选中"Artifacts",点击"+"选择jar,然后选择"from modules with dependencies"。



 

3. 在配置窗口中配置"Main Class"。



 

4. 选择“Main Class”后,选择“copy to the output  and link via manifest”,配置“Directory for META-INF/MAINFEST.MF”,此项配置的缺省值是:D:\workshop\DbUtil\src\main\java,需要改成:D:\workshop\DbUtil\src\main\resources,如果不这样修改,打成的jar包里没有包含META-INF/MAINFEST.MF文件,这个应该是个IDEA的BUG(参考:http://stackoverflow.com/questions/15724091/how-to-run-a-jar-file-created-using-intellij-12),配置完成后如下图所示,点击OK进入下一步。(如果选择“extract to the target jar”,即把第三方jar文件,打入最终的可运行jar包时,可以不修改“Directory for META-INF/MAINFEST.MF”的配置,用缺省值即可)


 

5. 右键“<output root>”,选择“Create Directory”,输入目录名:lib



 

6. 用鼠标按住第三方jar,拖入<output root>下的lib目录下



 

7. 用鼠标选中我们将要打出的jar包文件,点击下方“Class Path:”后面的按钮,在“Edit Classpath”窗口中,将每个第三方jar文件前加上相对路径:lib\,形成如:lib\xxx.jar的形式,这个目录“lib”,就是前面输入的那个“lib”,这里如果第三方jar很多的话,可以在“Edit Classpath”窗口中,用鼠标选中所有第三方jar,然后Ctrl+X,把内容cut & copy到UltraEdit里,用列格式一下子全部修改好,再paste到“Edit Classpath”窗口中。完成后如下所示:

这里idea的处理就太不智能了,不如eclipse。我的依赖包肥肠多,我使用sublime编辑器的多行编辑功能方便的在lib行首添加lib\(快捷键command(win:ctrl)+shift+L)


 

8. 完成后,点击OK,Apply等按钮,回到IDEA的主菜单,选择“Build - Build Artifacts”下的“Build”或者“Rebuild”即可生成最终的可运行的jar,并把第三方jar放到和此jar并行的lib目录下,用winrar打开目标jar,可以看到META-INF/MAINFEST.MF文件被正确包含,内容也正确。


 

9. 在jar包的输出目录下,执行命令:java -jar xxx.jar,即可运行jar文件。

本文转载自:http://bglmmz.iteye.com/blog/2058785

共有 人打赏支持
陈栋
粉丝 0
博文 44
码字总数 14858
作品 0
益阳
高级程序员
私信 提问
使用IDEA创建GUI Form项目并构建

本文使用的开发环境是 IDEA使用GUI Form开发的时候,到产品发布打包的阶段,由于IDEA的GUI Form需要依赖IDEA提供的一个jar包,使用IDEA自带的构建、运行方法,在run和debug的时候,都运行的很...

xiaoxin
09/06
0
0
Spark(八) -- 使用Intellij Idea搭建Spark开发环境

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq1010885678/article/details/45954731 Intellij Idea下载地址: 官方下载 选择右下角的Community Edition版...

jchubby
2015/05/24
0
0
idea导出jar,运行jar报错

idea,maven,javafx,jar 用idea编写的javafx的maven项目,用maven插件打包之后生成jar,但是用cmd运行jar报错Exception,项目中还要包含第三方的jar包,请问谁知道怎么处理,报错Exception...

aniuzeng
2017/06/20
272
4
springboot打包与配置文件外置

目标: 1.将普通的MAVEN JAVA工程打包成SpringBoot可运行的jar包 2.将application.yml和log4j2.xml 1.打包 SpringBoot项目打包要求将依赖的jar全部打进去,因为SpringBoot的自动配置需要用到...

特拉仔
07/24
0
0
springboot项目以war包运行不成功

大家好!我这是Idea里面起的SpringBootDemo项目,工程一直以配置的Configuration:启动SpringBootApplication项运行项目, 打包为jar包,在dos里面运行java -jar xx.jar也没有问题。 现在想要进...

fgod
2016/12/05
4.3K
0

没有更多内容

加载失败,请刷新页面

加载更多

Gensim?

Gensim是一款开源的第三方Python工具包,用于从原始的非结构化的文本中,无监督地学习到文本隐层的主题向量表达。它支持包括TF-IDF,LSA,LDA,和word2vec在内的多种主题模型算法,支持流式训...

火力全開
16分钟前
0
0
图片验证码

图片验证码,线上登录是最常见的场景,也有发送手机验证码之前进行图片验证码的验证。 图片验证码很大程度上防止机器人撞库登录或频繁发起短信验证码从而使系统暂时性"瘫痪"。 以下是项目中用...

貔貅叔
20分钟前
1
0
科班出身程序员和培训出来的程序员区别在哪?

科班出身只是代表你要从事的职业和你的专业是一致的,代表着你具备了得天独厚的优势,至于是不是优势看你上班好不好学,平时逃课没,上班是认真听还是玩手机。一般而言科班出来的理论性比较强...

java菜分享
20分钟前
0
0
java框架学习日志-8(AOP简介)

小王被委托开发一款游戏,程序分为启动页面,登陆页面,战斗页面等。小王就采用了面向对象编程思想(OOP),把整个程序分解成下图 这种就是传统的自上而下的编程,或者说纵向的编程,负责启动...

白话
20分钟前
2
0
简易ZK分布式锁实现与测试

分布式锁创建以及销毁 public class ZKLock { private String node; public String path = "/lock"; ZkClient zkClient = new ZkClient("192.168.0.239"); public......

zzx10
21分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部