jar包资源文件

时间:2021-05-14 09:06:46
我做了一个工程,我的工程里需要用到文件数据a.dat,
打包时选择export generated class files and resources.
工程内加载文件a.dat的方式如下:
String sourceDirectory= this.getClass().getProtectionDomain().getCodeSource().getLocation().getFile();
 loadFile(sourceDirectory+"a.dat");
但是打成jar以后,在别的工程内引用时,loadFile失败。

请问这种情况应该怎么处理?

9 个解决方案

#1


你为何不把这个文件直接放在src目录下。。。
引相对路径不就得了?

#2


引用楼主 YaoAlexChen 的帖子:
我做了一个工程,我的工程里需要用到文件数据a.dat, 
打包时选择export generated class files and resources. 
工程内加载文件a.dat的方式如下: 
String sourceDirectory= this.getClass().getProtectionDomain().getCodeSource().getLocation().getFile(); 
loadFile(sourceDirectory+"a.dat"); 
但是打成jar以后,在别的工程内引用时,loadFile失败。 

请问这种情况应该怎么处理? 


编译之后,文件都是在bin目录下的.你可以用this.getClass().getResource("/").getPath();直接得到的就是当前项目的bin目录下.然后进行相对路径的配置.
至于做成jar包之后是否应该注意压缩文件的路径,期待下面高手解决.

#3


up
up
up
不是太懂,帮你顶

#4


以ehcache-1.2.3.jar为例子
这个jar 默认包路径下有个ehcache-failsafe.xml文件
我随便找了个类,测试代码如下:
取得file对象了你想干什么都行了,我的ehcache-1.2.3.jar就是引用的,满足楼主需求吧
		java.net.URL url=net.sf.ehcache.Statistics.class.getClassLoader().getResource("ehcache-failsafe.xml");
File file=new File(url.getFile());
System.out.println(file);

#5


引用 4 楼 sunyujia 的回复:
以ehcache-1.2.3.jar为例子
这个jar 默认包路径下有个ehcache-failsafe.xml文件
我随便找了个类,测试代码如下:
取得file对象了你想干什么都行了,我的ehcache-1.2.3.jar就是引用的,满足楼主需求吧
java.net.URL url=net.sf.ehcache.Statistics.class.getClassLoader().getResource("ehcache-failsafe.xml");
        File file=newFile(url.getFile());
        System.out.println(file);

为什么要这样引用?如果你断网了怎么办?

#6


引用 5 楼 yami251139 的回复:
引用 4 楼 sunyujia 的回复:
以ehcache-1.2.3.jar为例子 
这个jar 默认包路径下有个ehcache-failsafe.xml文件 
我随便找了个类,测试代码如下: 
取得file对象了你想干什么都行了,我的ehcache-1.2.3.jar就是引用的,满足楼主需求吧 
java.net.URL url=net.sf.ehcache.Statistics.class.getClassLoader().getResource("ehcache-failsafe.xml"); 
        File file=newFile(url.getFile()); 
        System.out.println(…

跟网络没关系,放心。本地的,异地的话这样也不行,需要url,开流。

#7


引用 4 楼 sunyujia 的回复:
以ehcache-1.2.3.jar为例子 
这个jar 默认包路径下有个ehcache-failsafe.xml文件 
我随便找了个类,测试代码如下: 
取得file对象了你想干什么都行了,我的ehcache-1.2.3.jar就是引用的,满足楼主需求吧 

        java.net.URL url=net.sf.ehcache.Statistics.class.getClassLoader().getResource("ehcache-failsafe.xml");
        File file=new File(url.getFile());
        System.out.println(file);


学习了,直接拿包里面的配置文件.
可是,我想楼主的意思应该是一个项目打成包之后,包内的类取包内的文件的路径,这个该怎么做呢?直接"xxx.class.getResource().getPath()得到的相对路径在包内还适用吗?

#8


引用 7 楼 lgg201 的回复:
引用 4 楼 sunyujia 的回复:
以ehcache-1.2.3.jar为例子 
这个jar 默认包路径下有个ehcache-failsafe.xml文件 
我随便找了个类,测试代码如下: 
取得file对象了你想干什么都行了,我的ehcache-1.2.3.jar就是引用的,满足楼主需求吧 

        java.net.URL url=net.sf.ehcache.Statistics.class.getClassLoader().getResource("ehcache-failsafe.xml"); 
        File file=new File(url.getFile()); 
        System.o…

相对路径在包内还适用吗?
可以,url.getFile()就是返回String类型的,只有路径对就行,把url.getFile()输出到控制台上一看格式就知道了。

http://blog.csdn.net/sunyujia/archive/2008/09/21/2957481.aspx
现在不太喜欢贴地址了,有时候会被说闲话。

#9


引用 2 楼 lgg201 的回复:
引用楼主 YaoAlexChen 的帖子:
我做了一个工程,我的工程里需要用到文件数据a.dat, 
打包时选择export generated class files and resources. 
工程内加载文件a.dat的方式如下: 
String sourceDirectory= this.getClass().getProtectionDomain().getCodeSource().getLocation().getFile(); 
loadFile(sourceDirectory+"a.dat"); 
但是打成jar以后,在别的工程内引用时,loadFile失败。 

请问这种情况应该怎么处理? 

同意这位大哥说的

#1


你为何不把这个文件直接放在src目录下。。。
引相对路径不就得了?

#2


引用楼主 YaoAlexChen 的帖子:
我做了一个工程,我的工程里需要用到文件数据a.dat, 
打包时选择export generated class files and resources. 
工程内加载文件a.dat的方式如下: 
String sourceDirectory= this.getClass().getProtectionDomain().getCodeSource().getLocation().getFile(); 
loadFile(sourceDirectory+"a.dat"); 
但是打成jar以后,在别的工程内引用时,loadFile失败。 

请问这种情况应该怎么处理? 


编译之后,文件都是在bin目录下的.你可以用this.getClass().getResource("/").getPath();直接得到的就是当前项目的bin目录下.然后进行相对路径的配置.
至于做成jar包之后是否应该注意压缩文件的路径,期待下面高手解决.

#3


up
up
up
不是太懂,帮你顶

#4


以ehcache-1.2.3.jar为例子
这个jar 默认包路径下有个ehcache-failsafe.xml文件
我随便找了个类,测试代码如下:
取得file对象了你想干什么都行了,我的ehcache-1.2.3.jar就是引用的,满足楼主需求吧
		java.net.URL url=net.sf.ehcache.Statistics.class.getClassLoader().getResource("ehcache-failsafe.xml");
File file=new File(url.getFile());
System.out.println(file);

#5


引用 4 楼 sunyujia 的回复:
以ehcache-1.2.3.jar为例子
这个jar 默认包路径下有个ehcache-failsafe.xml文件
我随便找了个类,测试代码如下:
取得file对象了你想干什么都行了,我的ehcache-1.2.3.jar就是引用的,满足楼主需求吧
java.net.URL url=net.sf.ehcache.Statistics.class.getClassLoader().getResource("ehcache-failsafe.xml");
        File file=newFile(url.getFile());
        System.out.println(file);

为什么要这样引用?如果你断网了怎么办?

#6


引用 5 楼 yami251139 的回复:
引用 4 楼 sunyujia 的回复:
以ehcache-1.2.3.jar为例子 
这个jar 默认包路径下有个ehcache-failsafe.xml文件 
我随便找了个类,测试代码如下: 
取得file对象了你想干什么都行了,我的ehcache-1.2.3.jar就是引用的,满足楼主需求吧 
java.net.URL url=net.sf.ehcache.Statistics.class.getClassLoader().getResource("ehcache-failsafe.xml"); 
        File file=newFile(url.getFile()); 
        System.out.println(…

跟网络没关系,放心。本地的,异地的话这样也不行,需要url,开流。

#7


引用 4 楼 sunyujia 的回复:
以ehcache-1.2.3.jar为例子 
这个jar 默认包路径下有个ehcache-failsafe.xml文件 
我随便找了个类,测试代码如下: 
取得file对象了你想干什么都行了,我的ehcache-1.2.3.jar就是引用的,满足楼主需求吧 

        java.net.URL url=net.sf.ehcache.Statistics.class.getClassLoader().getResource("ehcache-failsafe.xml");
        File file=new File(url.getFile());
        System.out.println(file);


学习了,直接拿包里面的配置文件.
可是,我想楼主的意思应该是一个项目打成包之后,包内的类取包内的文件的路径,这个该怎么做呢?直接"xxx.class.getResource().getPath()得到的相对路径在包内还适用吗?

#8


引用 7 楼 lgg201 的回复:
引用 4 楼 sunyujia 的回复:
以ehcache-1.2.3.jar为例子 
这个jar 默认包路径下有个ehcache-failsafe.xml文件 
我随便找了个类,测试代码如下: 
取得file对象了你想干什么都行了,我的ehcache-1.2.3.jar就是引用的,满足楼主需求吧 

        java.net.URL url=net.sf.ehcache.Statistics.class.getClassLoader().getResource("ehcache-failsafe.xml"); 
        File file=new File(url.getFile()); 
        System.o…

相对路径在包内还适用吗?
可以,url.getFile()就是返回String类型的,只有路径对就行,把url.getFile()输出到控制台上一看格式就知道了。

http://blog.csdn.net/sunyujia/archive/2008/09/21/2957481.aspx
现在不太喜欢贴地址了,有时候会被说闲话。

#9


引用 2 楼 lgg201 的回复:
引用楼主 YaoAlexChen 的帖子:
我做了一个工程,我的工程里需要用到文件数据a.dat, 
打包时选择export generated class files and resources. 
工程内加载文件a.dat的方式如下: 
String sourceDirectory= this.getClass().getProtectionDomain().getCodeSource().getLocation().getFile(); 
loadFile(sourceDirectory+"a.dat"); 
但是打成jar以后,在别的工程内引用时,loadFile失败。 

请问这种情况应该怎么处理? 

同意这位大哥说的