这里主要是对今天遇到的打包问题进行记录...
以便以后忘了或者可能会帮助到需要帮助的人...
我遇到的问题有:
1.fatjar打包问题
如果用了第三方jar包,想把自己的项目一次性打包成一个jar,那么需要去下载fatjar,怎么安装我就不赘述了。
2.图片显示问题
我的项目里面界面引用了图片,直接在eclipse可以正常显示,但是打包出去显示不了
原因之一是我的代码写了引用的地址是 "src/xxx.jpg" ,这样的错的,因为编译过后会放到bin目录下,那样就找不到 "src/xxx.jpg"
而且最好是用一个专门的文件夹来放这样的文件 比如"resource/xxx.jpg"
引用地址的时候写成resource的相对路劲 "/resource/xxx.jpg" 即可。
Toolkit tk = Toolkit.getDefaultToolkit(); Image image = tk.createImage("/resource/xxx.jpg");
后来我图片引用得很多 我就写了一个类来放这些静态变量 然后其他地方引用这些静态变量即可 目的是好维护。
3.jar引用外部图片的问题
我想把我的图片不打包进jar,而是在jar的外面,那样方便我以后替换。
tk.createImage("/resource/xxx.jpg");的createImage可以给URL和filename
我开始用的URL
this.class.getResource("/resource/xxx.jpg");取图片路劲,
但是无论怎么取 这个方法都只能得到 我的项目/bin/ 这个目录
不能得到bin的同级或者上面级别的目录,不知是不是我用法没对。
最后换成
String filename = System.getProperty("user.dir") + "/resource/xxx.jpg"; createImage(filename);
的方法解决问题。
感觉要是jar包引用外部图片的话 只能给filename 用 URL 始终不行...
4.Class-Path问题
总感觉fatjar打包不太好,而且打包出来会多一些fatjar的包 大概30KB左右
还是自己在MANIFEST.MF修改Class-Path很好
注意空格
Manifest-Version: 1.0 Main-Class: hnysms.ShowMe Class-Path: . lib/log4j-1.2.15.jar lib/jdsmsserver-3.4.jar lib/mysql-connector-java-5.1.3-rc-bin.jar
5.jar读取外部配置文件的问题
我想把我项目里面的配置文件 比如dbconfig.properties log4j.xml 不打包进jar
因为打包进去跟硬编码没多大区别了..
dbconfig.properties 直接可以在读取的代码里面写成
InputStream ins = getClass().getResourceAsStream("/resource/dbconfig.properties");
这样在eclipse会出错 打包出来是可以的。
但是log4j.xml 需要在你的main方法里面写
PropertyConfigurator.configure(System.getProperty("user.dir") + "/resource/log4j.xml");
这样问题就解决了...
付一张做好的程序截图
^_^ 很小菜的