java打包后的路径问题

来源:互联网 发布:对网络直播的看法论文 编辑:程序博客网 时间:2024/05/16 02:08
JAVA应用程序打包时资源文件的路径问题解决

用netbeans做了个应用程序,其中应用到了一些图片,还有几个声音文件,调试运行都没有问题,打包生成jar后,运行jar文件时,这些图片、声音确出不来。这个问题困惑我好长时间。

找书籍中例题、搜网络文章,自己试了好多种方法,问题逐步明朗。今天总算找到问题的根源,大有“原来如此”之感叹。痛苦的经历就不说了。把找来的资料以及自己的看法写下来,对自己是一个总结,也许还能帮上别人的忙。特别是刚开始进行JAVA编程的正在努力的人。

1.先说在应用程序中对资源的的访问路径问题

获取文件路径的方法:

(1)String path = System.getProperty("user.dir");

(2)Properties   properties   =   System.getProperties();   
System.out.println(properties.getProperty("user.dir"));

(3)File   file=new   File(".");   
System.out.println(file.getAbsolutePath());

(4)this.getClass().getResource("/");

(5)ClassLoader cl = this.getClass().getClassLoader();
Icon saveIcon = new ImageIcon(cl.getResource("images/save.gif"));

常用的大体有这么几种,还有其他的一些方法。不再多说。

2.说一下为什么打包后运行出现问题

这个问题其实涉及到JAVA语言的根本原则之一:

对于WIN操作系统来说,其文件夹,文件名,扩展名的大小写不区分的。但是我们再打包后的jar文件中读取资源是大小写区分的,所以再添加资源,引用资源时一定要注意文件夹名、文件名、扩展名的大小写问题,建议在编程时统一使用一种方式,要么大写,要么小写,最好全用小写。

来个例子吧。我在程序中使用一个图片作按钮的图标:

btn.setIcon(new ImageIcon(getClass().getResource("resources/pic01.jpg")));

这里用getClass().getResource("")来获取相对路径。图片pic01.jpg位于项目文件里的resources中。

这之所以一直不能解决问题,就是因为我的图片的扩展名是大写的JPG,所以一直是调试运行通过,打包后就不会显示图片。


转自:java打包后的路径问题

0 0
原创粉丝点击