jar文件中的名称冲突



我有一个目录/插件有两个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。如何解决这一矛盾?

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

另一个选择是不使用类加载器,直接使用ZipFile
从.jar中读取需要的文件。

将最新文件放在类路径

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

相关内容

  • 没有找到相关文章

最新更新