我做了一个工程,我的工程里需要用到文件数据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.   


    编译之后,文件都是在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.   

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

  6.   


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

  7.   

    相对路径在包内还适用吗?
    可以,url.getFile()就是返回String类型的,只有路径对就行,把url.getFile()输出到控制台上一看格式就知道了。http://blog.csdn.net/sunyujia/archive/2008/09/21/2957481.aspx
    现在不太喜欢贴地址了,有时候会被说闲话。