有个jar包a.jar,里面有a.class ,A.class又使用了a.jar里的a.properties文件
当我在我的主程序里用自定义的classloader加载a.jar调用A.class的时候  这个a.properties文件找不到了 - -
请问大家告诉下怎么解决

解决方案 »

  1.   

    你先打印获取a.properties的路径看看是什么
      

  2.   

    Properties property = System.getProperties();
    String str = property.getProperty("user.dir");
    运行这个,打印出它的路径,然后适当加上a.properties的路径,这样应该没问题了
      

  3.   

     "jar:file:/"+ AbsolutePath +"!/a.properties";
    在jar包中的文件可以用这种方式加载比方我的rmi使用jar包启动需要使用java.policy文件
    路径为
    jar:file:/F:\workspace\MSGRmiServer\MSGRmiServer.jar!/java.policy
      

  4.   

    加载jar包中的文件要使用xxx.getClass().getClassLoader().getResourceAsStream()的方式来加载,不能使用普通的文件路径。
      

  5.   

    1. 创建一个data.txt文件,里面随便写点数据,再创建一个Test.java文件,把它们放在同一个目录中,编译运行,可以看到输出data.txt中的内容。
    2. 再把编译好的class文件把成可执行jar包(可以使用Eclipse来打包,方便),同时把data.txt文件也放在jar包中,再执行打包后的jar文件,同样可以把jar包中的data.txt的内容输出。Test.java的内容如下:import java.io.BufferedReader;
    import java.io.InputStream;
    import java.io.InputStreamReader;public class Test {
        public static void main(String[] args) throws Exception {
            InputStream is = Test.class.getClassLoader().getResourceAsStream("data.txt");
            BufferedReader reader = new BufferedReader(new InputStreamReader(is));
            
            String line = null;
            while ((line = reader.readLine()) != null) {
                System.out.println(line);
            }
            
            reader.close();
        }
    }