当你把一个java写的程序打包为jar的时候,请务必注意你读取资源文件的方式。
一般我们为了方便读取资源文件,在一个类中定义一个基本路径
base_path=ClassName.class.getResource("/").getPath();
变量,在其他的类中想读取资源文件的时候,直接用这个变量加上资源的相对路径,这样当然在ide里面运行是没有任何问题的,但是一旦打包成jar后就无法运行,原因是无法读取资源文件,因为jar的url的规则是这样的:file:/C:/fat.jar!images/img.jpg是这样的,这个和File的路径规则不一样,所以我们new 一个File当然不会成功了哦,在网上找了许久也没找到什么好点的办法,唯一知道的就是
ClassName.class .getResourceAsStream("/images/trayIcon.jpg")这样具体到某一个文件上去,得到一个流。那么这样在jar中是没任何问题的。
这个问题困扰了我很久,以前也遇到过,昨晚又遇到了,终于找到原因所在了,杯具++啊
大牛们看到了,千万别笑话我,如果有更好的办法请告知小弟,万分感谢!
发觉java真的不适合开发桌面应用程序啊。