您的位置:首页 > 编程语言 > Java开发

eclipse 打包 jar 读取外部的配置文件 图片等 fatjar MANIFEST.MF Class-Path

2011-09-24 21:08 736 查看
这里主要是对今天遇到的打包问题进行记录...

以便以后忘了或者可能会帮助到需要帮助的人...

我遇到的问题有:

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");

这样问题就解决了...

付一张做好的程序截图

^_^ 很小菜的

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: