首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java相关 >

java打包的有关问题

2012-12-17 
java打包的问题我的java项目中有个xml文件,在eclipse里面run的时候没有问题,我在解析的时候文件是用File f

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包内的文件对象。

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


[解决办法]
路径问题 
用getResourceAsStream()用流获取对文件操作



[解决办法]
NomeFrame.xml放到jar外面,和jar同一级试试
[解决办法]

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

但是我的项目是想几个一起共享的,在网……


我是把我的.jar和xml放在我电脑的e盘。
局域网里的电脑通过网络邻居到我的e盘里面执行
[解决办法]
引用:
我是把我的.jar和xml放在我电脑的e盘。
局域网里的电脑通过网络邻居到我的e盘里面执行


你是说通过局域网内别的机器来启动你本机的程序是吧?如果是这样,和你楼顶的问题不搭界的。
启动后一样是在你本机执行。

路径问题的话我试过了,把getFile换成getPath



[解决办法]

import java.io.File;
import java.net.URL;

public class Test {

    public static void main(String[] args) {
        new Test().foo();
    }

    public void foo() {
        URL url = ParseRead.class.getClassLoader().getResource("NomeWrite.xml");

        System.out.println(url.getPath());

        File file4 = new File(url.getPath());

        System.out.println(file4.getAbsolutePath());
    }

}

[解决办法]
public  String Path = "/"+this.getClass().getResource("/xxx.xml").toString().substring(6).replace("%20"," ");

getClass().getResource取得的路径前面会多6个字符 用substring去掉。
getClass().getResource取得的路径里如果有空格 显示的 20% 所以需要把20% 替换成空格

热点排行