写了一个Java Project,其中用到了资源文件,打成jar包后,总是说找不到资源文件,怎么办?希望懂得朋友给个建议~!

解决方案 »

  1.   

    InputStream in = XXX.class.getClassLoader().getResourceAsStream("XXX.properties");
    这种方式加载类路径下的资源文件
    要把资源文件放到类路径中方法很多,我最喜欢这种。
      

  2.   

    不建议将资源文件也打包到JAR中
      

  3.   

    如果不希望把配置文件之类的打到jar里,那么用
    String sPath= System.getProperty("user.dir");
    然后配置文件的路径为
    String filepath = "file:///"+sPath+"\\xxxx.xxx";
      

  4.   

    这种做法如果换到类加载机制是委托的。就是一出悲剧了。首先楼主应该明白jar包中的资源,要生存一个file对象是不可能地。最好的情况就能取个inputstream,我想这基本就可以解决你的问题。
    下面是取sqlserver中msbase.jar的META-INF/MANIFEST.MF文件。InputStream is = Test.class.getResourceAsStream("/META-INF/MANIFEST.MF");
    int i = 0;
    byte[] buff = new byte[1024];
    while((i=is.read(buff))>0)
    {
    System.out.println(new String(buff,0,i));
    }
    is.close();Test类指代classpath中任意类jar包中的也可以。但是需要注意地是你jar包中的配置文件,必须是唯一命名。不能和项目中的任意文件重名,包括jar包中的文件。