0

我有一个目录 /plugin ,里面有两个 jar 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。如何解决这个冲突?

4

3 回答 3

0

将具有最新文件的一个放在类路径中的另一个之前

于 2011-11-25T14:24:42.203 回答
0

你确定它没有加载两个 config.xml 文件吗?请记住,解析名称时,处理从 PATH/CLASSPATH 的左侧开始,并一次将一个标记向右移动,直到到达列表末尾或找到第一个匹配项。

于 2011-11-25T14:26:23.853 回答
0

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

另一种选择是不要弄乱类加载器黑客,而只需使用ZipFile直接从 .jar 读取您需要的文件

于 2011-11-25T14:26:57.567 回答