您的位置:首页 > 其它

IDEA 项目打成jar包

2016-03-14 20:07 204 查看
本来IDE里面运行正常的项目,打包成jar后经常访问不到文件,现记录解决方法。

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,然后基本能解决,再不然,俺也就没辙了。。。。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: