日期:2014-05-20  浏览次数:20783 次

java打包的问题
我的java项目中有个xml文件,在eclipse里面run的时候没有问题,我在解析的时候文件是用
File file4=new File(ParseRead.class.getClassLoader().getResource("NomeFrame.xml").getFile()); 
打包以后就读取不了了,请问是为什么?
------解决方案--------------------
需要把NomeFrame.xml也一起打包到jar包里
------解决方案--------------------
已经打包进去了,我用exe4j的时候出现了java.io.FileNotFoundException: D:\file:\C:\Users\Administrator\Desktop\JComboBox.jar!\NomeFrame.xml (文件名、目录名或卷标语法不正确。)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(Unknown Source)
at java.io.FileInputStream.<init>(Unknown Source)
at sun.net.www.protocol.file.FileURLConnection.connect(Unknown Source)
at sun.net.www.protocol.file.FileURLConnection.getInputStream(Unknown Source)错误
打包的时候目录改变了,但是我用的是get class方法呀



------解决方案--------------------
引用:
已经打包进去了,我用exe4j的时候出现了java.io.FileNotFoundException: D:\file:\C:\Users\Administrator\Desktop\JComboBox.jar!\NomeFrame.xml (文件名、目录名或卷标语法不正确。)
at java.io.FileInputStream.open(Native Method)
at java.io.……

从报错来看,你的Resource已经找到了

ParseRead.class.getClassLoader().getResource("NomeFrame.xml")

只是再getFile的结果不可用而已
D:\file:\C:\Users\Administrator\Desktop\JComboBox.jar!\NomeFrame.xml (文件名、目录名或卷标语法不正确。)
这路径相当奇怪!



------解决方案--------------------
把getFile去掉试试

File file4=new File(ParseRead.class.getClassLoader().getResource("NomeFrame.xml"));
 

------解决方案--------------------
getfile去掉会出现错误,file需要的是url getresourse 还回的是uri
------解决方案--------------------
http://download.csdn.net/detail/wangjiebo/4813743 我把我的jar包上传上来了,帮我看看那里有写错为什么在eclipse里面就可以,打包了就不行了
------解决方案--------------------
引用:
getfile去掉会出现错误,file需要的是url getresourse 还回的是uri

是的,我事先也看过这个,所以知道URL,URI

不能强转吗?URL是URI的一种,关键是获得路径不对

不过事先你可以这样测试一下能不能实例化jar中的文件
C:\Users\Administrator\Desktop\JComboBox.jar!\NomeFrame.xml
直接以这种路径构造File对象会有问题吗


------解决方案--------------------
引用:
http://download.csdn.net/detail/wangjiebo/4813743 我把我的jar包上传上来了,帮我看看那里有写错为什么在eclipse里面就可以,打包了就不行了

试了一下,直接按路径构造jar包内的文件对象是可以的
接下来就只是获得准确的路径问题了

------解决方案--------------------
我试过了把getfile去掉,改成toURI方法打包以后把jar和xml放在不同目录,比如e:\JComboBox.jar ,e:\NomeFrame.xml这样是没有问题的,我在程序里面直接写
File file=new File("e:/NomeFrame.xml");可以读的到,

但是我的项目是想几个一起共享的,在网上邻居里面,在别的电脑用网上邻居就又读不到路径了
有没有什么办法可以动态改变路径,我在的电脑上就读取e:/xml
在网上邻居就是别的路径
------解决方案--------------------
引用:
我试过了把getfile去掉,改成toURI方法打包以后把jar和xml放在不同目录,比如e:\JComboBox.jar ,e:\NomeFrame.xml这样是没有问题的,我在程序里面直接写
File file=new File("e:/NomeFrame.xml");可以读的到,

但是我的项目是想几个一起共享的,在网上邻居里面,在别的电脑用网上邻居就又读不到路径了
有没有什么办法可……

File file=new File("e:/NomeFrame.xml");
你说的这种普通的文件构造肯定可以啊,我说的是构造jar包内的文件对象。

不过你现在说的貌似需求变了,网上邻居是什么意思,是跨局域网构造文件对象吗?这个又是另外的问题了