IDEA 打包 jar 包记录
文章目录
- 前言
- 1. 打包 jar 包流程
- 2. 可能遇到的问题
- 2.1 MANIFEST.MF 文件已经存在报错
- 2.2 已经删除的 jar 包配置再次打开时依然存在
前言
最近在了解 Java Agent 探针技术,在做 demo 的时候需要把代码打包成 jar 包,然后通过 java -javaagent:xxx -jar xxx
命令启动才能测试代码是否正确修改了字节码,因此有了这篇文章
1. 打包 jar 包流程
首先直接点击图示位置(也可以点击File --> Project Structure),打开项目结构配置
在打开的界面选择 Artifacts,点击加号
+
--> 选择 JAR–> 选择 From modules with depenencies 新建 jar 包配置
新建 jar 包配置界面如下所示,其中从上往下红框标记的都是需要注意的
- 首先选中需要打包的 Module,也就是对应模块
- 选中该模块中的主类,点击文件夹图标会自动检测这个模块中存在的主类,选择即可
- 选择选中模块依赖的第三方 jar 包在新的 jar 包中的存在形式,主要有两种选择:
1.extract to the target JAR
:把模块依赖的 jar 包解压,将其内部包含的 class 文件直接合并到目标 jar 文件中。这种方式打包出来的 jar 文件通过 IDEA 查看,会发现其内部不仅包含我们指定的模块的源文件夹,也包含了依赖的 jar 包中的文件夹
2.copy to the output directory and link via manifest
: 将模块依赖的 jar 包直接打包进目标 jar 包内,第三方 jar 包依然独立存在。这种方式需要指定第三方 jar 包在目标 jar 包中的Class Path
,否则程序启动时无法正确处理依赖 - 选择一个创建
MANIFEST.MF
文件的文件夹,如果该文件夹下已经有MANIFEST.MF
文件了则会在点击 OK 完成配置时报错,原因及解决方式见下节2.1 MANIFEST.MF 文件已经存在报错
基本配置完毕则进入下一步,界面如下所示
- 左侧选中新建的 jar 配置,右侧红框处都是可以修改的部分,如
Name(jar 配置名称)
,Output directory(打包出的 jar 包的存在文件夹)
Available Elements(可用元素)
用于选择需要打包进 jar 包中的文件,双击该选项下文件夹中的文件即可将其添加到 jar 包中- 最后
Class Path
用于配置目标 jar 包中依赖的 jar 包,如果在上一个步骤中选择了copy to the output directory and link via manifest
则一定要配置,配置值为依赖 jar 包在目标 jar 包中的相对路径,否则省略
- 左侧选中新建的 jar 配置,右侧红框处都是可以修改的部分,如
配置完成,就会在上文步骤3第四步指定的文件夹中创建一个
MANIFEST.MF
文件,打开该文件可以进行相关配置,比如笔者的配置如下,可以根据自身模块情况做修改
最后一步,点击Build–>Build Artifacts,在弹窗中选中目标 jar 包配置,然后在其右侧弹框中选择 Build 或者 ReBuild点击即可进行编译打包。打包完成后,可以在步骤4配置的
Output directory(打包出的 jar 包的存在文件夹)
中找到目标 jar。笔者以extract to the target JAR
方式处理第三方 jar 包,可以看到其依赖的 jar 包中的文件都合并到了目标 jar 包中
启动目标 jar 包,只需要在终端中执行
java -jar
命令即可。以笔者为例,启动命令为java -jar /Users/xxx/workspace/demo/out/artifacts/src/src.jar
2. 可能遇到的问题
本节记录在打包过程中遇到的问题,给自己做个笔记,也希望读者可以避免踩坑
2.1 MANIFEST.MF 文件已经存在报错
这个错误会在新建 jar 包配置时发生,具体如下截图。其实错误信息已经写的很明白,就是在这个目录下 MANIFEST.MF 文件已经存在
。一开始遇到这个错误可能会摸不着头脑,因为一般在 eclipse 下打包 jar 都需要我们手动创建 MANIFEST.MF 文件,而 IDEA 其实会自动帮助使用者创建 MANIFEST.MF 文件,当指定文件夹下已经有 MANIFEST.MF 文件则会报出这个错误。一般解决方法如下:
- 指定另一个文件夹作为 MANIFEST.MF 文件存在目录
- 将原文件夹下的 MANIFEST.MF 文件删除
自动创建的 MANIFEST.MF 文件不符合要求的时候,只要用户继续修改这个文件即可
2.2 已经删除的 jar 包配置再次打开时依然存在
这个问题的表现为已经点击了 -
按钮,删除了一个命名为 src的 jar 配置,但是再次打开该界面的时候这个配置又出现了
这个问题产生原因很简单,IDEA 会将创建过的 jar 配置缓存在 .idea 文件夹中,只要找到该文件夹,删除对应的 xml 文件即可,如下图所示
IDEA 打包 jar 包记录相关推荐
- cmd打包jar包并运行详解
今天搜索了很多关于cmd打包jar包并运行的文章,但是感觉都不是太清楚,现在弄明白了一些(至少能用了),在这里记录一下: 主要用到以下3条指令 1.编译java文件 javac -d ./ xxx.j ...
- android 打包jar包
昨天,自己用到别人的jar包的内容,后来,公司要求在之前的基础上增加几个功能,所以需要修改jar包的内容.别人的源代码给了我,我修改后进行打包成jar包.不过自己却不会用android studio ...
- 打包jar包时文件读取和第三方jar包的问题
本人自己遇到的问题.自己写的一个项目,想要打包成jar包放在定时器里去调用,遇到了如下问题 1.xml文件和properties文件读取问题 2.第三方jar包读取不到 解决方案: 1 我是在读取xm ...
- MapReduce打包jar包并运行的步骤操作以及重要的注意事项
目录 一.打包jar包以及上传的步骤 在eclipse把mapreduce程序进行打包 通过Xshell把JAR包上传到linux 二.执行jar包的注意事项 出现jdk版本异常的问题 情况描述 原因 ...
- IDEA中MAVEN项目如何打包JAR包
这篇文章主要为大家展示了"IDEA中MAVEN项目如何打包JAR包",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"IDEA中M ...
- SpringBoot:springboot项目打包jar包
pom.xml:加入依赖,插件 <?xml version="1.0" encoding="UTF-8"?> <project xmlns=& ...
- k8s部署jar包_学习K8S之路.6--- 在K8S中部署Jenkins,并使用Jenkins打包jar包
一:部署jenkins jenkins官网:https://jenkins.io/download/ jenkins镜像:https://hub.docker.com/r/jenkins/jenkin ...
- 使用Ant实现打包jar包上传到服务器
在开发过程中,常常需要同步更新服务器上的程序.如果每次都将程序重新打包,然后再登陆服务器进行上传,这样过程显得比较繁琐,特别是更新步骤较多时,很容易出错.我们可以通过Ant来实现打包和上传过程,如果是 ...
- SpringBoot项目在idea中运行正常,打包jar包后运行报NoClassDefFoundError和UnsatisfiedDependencyException解决方案...
SpringBoot项目在idea中运行正常,按照网上的方式打成jar包后在控制台运行报错. 第一个错误: 2018-09-06 09:38:35,222 ERROR (SpringApplicati ...
- IDEA打包jar包(打包可运行jar,外部引用jar包版)
参考地址:https://blog.csdn.net/dufufd/article/details/71126571 idea中将java项目中的单个类打包成jar包 参考地址:https://blo ...
最新文章
- php mysql编译安装目录_Linux下Apache PHP MySQL默认安装路径
- Google下重手了!安卓App广告弹窗被打击
- rtmp测试地址_超详细搭建多码率测试环境(成为流媒体高手必经之路)
- 置信区间估计 预测区间估计_估计,预测和预测
- 删除计算机360云盘,win7系统怎么取消电脑右键保存到360云盘选项
- java行转列_Java后端面试标准:如何准备一场后端面试?
- mysql连接数据库的包_java连接mysql数据库包
- Linux Shell笔记2 函数
- 查询字符串中子字符串所有出现位置
- Matlab读取显示图像顺序
- 最好的录屏软件 WebEx Recorder Editor
- MFC显示bmp图像
- phpQuery中文手册(更新中)
- 听听那冷雨 余光中
- 解决windows网络代理篡改,浏览器不能上网问题
- 前端css解决z-index 上层元素遮挡下层元素的方法
- 初学SQL 注入之常见的几种注入类型
- 你可以这样学习C语言
- 任正非:新荣耀要做华为最强竞争对手;小米集团王嵋因错误表达致歉并请辞;全球 5G 网络三分之一来自中国技术 | EA周报...
- 火狐 看网页注释_在Firefox内部(外部)创建注释
热门文章
- SUSE Linux 网络配置
- window10运行不了1stopt_1stOpt批量处理方程
- linux怎么从超级用户切换,linux怎么切换到超级用户
- pthread之条件变量pthread_cond_t
- 联想电脑如何进入BIOS的方法汇总
- 什么是敏捷开发(Scrum)?
- matlab simulink教程pdf,Simulink基础入门教程“完整版”.pdf
- java程序员必备快捷键
- tp6 阿里云短信接口 php
- [2022-06-21 完美解决]MacBookPro 2020 M1 开启2k HIDPI