IDEA 项目打成jar包
2016-03-14 20:07
204 查看
本来IDE里面运行正常的项目,打包成jar后经常访问不到文件,现记录解决方法。
project目录结构:
那么,因为所有的类都在同一个包名下,就都可以使用绝对路径来访问logo.icon,例如这样的路径:
String icon= “\files\logo. png”;
//顺便说一下,JFrame设置左上角icon,好像只能用png格式图片,.icon格式是不行的,
路径前面的“/”表明使用绝对路径,即当前类的顶级package的同级目录,即这里的src/目录下,但是,这样还不行,程序里面还要使用 getResource() 方法,来访问文件。
Test.java
这样路径就没问题了,运行如图,左上角图标修改成功
接下来就是在ItellijIDEA里面打成jar包。
进入project structure,如下操作
然后,给jar包命名,然后点击+号,点击module output 添加项目,这里为TestPro
点+号,选择Extracted Directory添加项目依赖的jar包,另说一下,这个jar包我放在lib/目录下面的,然后在module setting里面添加到了依赖目录里面了,外部jar包只要放在这里就能使用,添加方法如下:
点了加号后,选择JARs or directories,然后选择TestPro项目里面的lib目录,然后选择类型当然是jar Directory
完了lib目录就会出现在 dependencies中,记得要勾选lib哦
好了,继续打包我们的jar,,,项目添加了,依赖的jar包也添加了,那个files目录不用添加,会自动打包进去。然后就是选择好main class,选择放置manifest file的目录,这都不用说。
说一下这个classpath:
这是配置依赖的jar包的路径使用的,目测像之前设置好依赖目录 lib 之后,选择完jar包 这里会自动填好。所以我还没用到。。。
然后就是 build ,选择Build Artifacts,rebuild,这就完了啊,然后就去out目录里面找生成的jar包就行了,
jar包生成了记进去看看目录结构有没有错,我们这里正确的应该是:
ps: 虽然这样做基本没错过,但是有时候还是会出岔子,建议把项目的编译class删除,重新编译,生成的jar包也删除,重新build,然后基本能解决,再不然,俺也就没辙了。。。。
project目录结构:
TestPro\ bin lib src\ com.folmarcher\ \\包名 Test.java files\ logo.icon
那么,因为所有的类都在同一个包名下,就都可以使用绝对路径来访问logo.icon,例如这样的路径:
String icon= “\files\logo. png”;
//顺便说一下,JFrame设置左上角icon,好像只能用png格式图片,.icon格式是不行的,
路径前面的“/”表明使用绝对路径,即当前类的顶级package的同级目录,即这里的src/目录下,但是,这样还不行,程序里面还要使用 getResource() 方法,来访问文件。
Test.java
package com.folmarcher; import javax.imageio.ImageIO; import javax.swing.*; public class Test extends JFrame { String icon = "/files/logo.png"; public static void main(String[]args){ Test t = new Test(); t.launch(); } public void launch(){ try{ UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); //Test.class得到Test类的目录,然后再访问就没有问题了 //或者用,this.getClass().getResource();也行 //但是注意这两种方法得到的都只是 “当前” 类Test或对象t的目录, this.setIconImage(ImageIO.read(Test.class.getResource(icon))); } catch(Exception e){ e.printStackTrace(); } setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setSize(300,200); setVisible(true); } }
这样路径就没问题了,运行如图,左上角图标修改成功
接下来就是在ItellijIDEA里面打成jar包。
进入project structure,如下操作
然后,给jar包命名,然后点击+号,点击module output 添加项目,这里为TestPro
点+号,选择Extracted Directory添加项目依赖的jar包,另说一下,这个jar包我放在lib/目录下面的,然后在module setting里面添加到了依赖目录里面了,外部jar包只要放在这里就能使用,添加方法如下:
点了加号后,选择JARs or directories,然后选择TestPro项目里面的lib目录,然后选择类型当然是jar Directory
完了lib目录就会出现在 dependencies中,记得要勾选lib哦
好了,继续打包我们的jar,,,项目添加了,依赖的jar包也添加了,那个files目录不用添加,会自动打包进去。然后就是选择好main class,选择放置manifest file的目录,这都不用说。
说一下这个classpath:
这是配置依赖的jar包的路径使用的,目测像之前设置好依赖目录 lib 之后,选择完jar包 这里会自动填好。所以我还没用到。。。
然后就是 build ,选择Build Artifacts,rebuild,这就完了啊,然后就去out目录里面找生成的jar包就行了,
jar包生成了记进去看看目录结构有没有错,我们这里正确的应该是:
test.jar/ com.folmarcher/ Test.class files/ logo.png META-INF/ menifest.mf
ps: 虽然这样做基本没错过,但是有时候还是会出岔子,建议把项目的编译class删除,重新编译,生成的jar包也删除,重新build,然后基本能解决,再不然,俺也就没辙了。。。。
相关文章推荐
- [C/C++]_[判断程序是32位还是64位]
- YTU:学生成绩输入和输出
- 自定义进度条控件(附带百分比的)
- 【AHOI2013】【BZOJ3237】连通图
- UITextField setInputAccessaryView / setInputView
- 20160314 Servlet 入门
- openCV2马拉松第18圈——坐标变换
- [bzoj4417][SHOI2013]超级跳马
- 机房收费系统个人版重构总结
- 【数据结构与算法】(五) c 语言递归与汉诺塔实现
- 1. Two Sum
- hivemeta、sparkSubmit进程参数优化
- jqxGrid自定义行编辑器
- Android 热门博主汇总
- 输出星号图
- android 中样式修改关于shape 的相关问题
- {小结}NOIP2005TG
- eclipse安装sdk后出现的错误
- Java线程
- Java异常