2011-11-25 180 views
0

我有两个罐子在那里a.jar文件和B.jar。两者的目录/插件具有相同名称的文件,config.xml中名称冲突

File file = new File("plugin/"); 
for (File item: file.listFiles()) { 

    if (item.isFile() && item.getName().substring(item.getName().lastIndexOf(".")).equals(".jar")) { 
     ClassPathHacker.addFile(item); // classPathHacker adds the jar to classpath 

     InputStream is = getClass().getClassLoader().getResourceAsStream("config.xml"); 
    } 
} 

但问题是它在新的迭代之后不加载新的config.xml文件,而是每次加载第一个config.xml。如何解决这个冲突?

回答

0

使用ClassLoader#getResources()获取所有config.xml文件的URL。然后你可以选择使用哪一个,可能你需要最后一个。

另一种选择是不是好惹的类加载器黑客和刚读使用ZipFile

可以直接从该.jar需要的文件
0

把一个用最新的文件,另一个在classpath

0

你确定这是不是同时装入的config.xml文件之前?请记住,当解析名称处理从PATH/CLASSPATH的左侧开始时,一次向右移动一个标记,直到到达列表的末尾或找到第一个匹配。