Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/369.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 处理着色(uber/fat)jar文件中的重复条目_Java_Gradle_Jar_Classloader_Gradle Shadow Plugin - Fatal编程技术网

Java 处理着色(uber/fat)jar文件中的重复条目

Java 处理着色(uber/fat)jar文件中的重复条目,java,gradle,jar,classloader,gradle-shadow-plugin,Java,Gradle,Jar,Classloader,Gradle Shadow Plugin,我创建了一个jar文件,由多个jar创建(在本例中我使用了插件) 原来该文件在/META-INF中包含重复的文件。其中大多数是来自原始jar文件的多个license.txt,但其中一些是我感兴趣的Spring工厂 在Maven或Gradle中使用各种类似fatjar的工具时,这种行为似乎很常见,而且似乎没有任何方式禁止这种行为 我已经检查过java.lang.ClassLoader#getResources是否会将这些条目作为相同URL的列表返回,例如: jar:file:/C:/temp/m

我创建了一个jar文件,由多个jar创建(在本例中我使用了插件)

原来该文件在
/META-INF
中包含重复的文件。其中大多数是来自原始jar文件的多个
license.txt
,但其中一些是我感兴趣的Spring工厂

在Maven或Gradle中使用各种类似fatjar的工具时,这种行为似乎很常见,而且似乎没有任何方式禁止这种行为

我已经检查过
java.lang.ClassLoader#getResources
是否会将这些条目作为相同URL的列表返回,例如:

  • jar:file:/C:/temp/myJar.jar/META-INF/spring.factories
  • jar:file:/C:/temp/myJar.jar/META-INF/spring.factories
因此,一旦获得URL,就无法通过编程方式返回所有重复文件的内容

Java能以某种方式处理这样的重复文件吗


或者,更一般地说,从规范的角度来看,有一个包含重复文件的jar是一种有效且受支持的情况吗?我已经检查过了,它也没有给我任何线索。

maven shade plugin
中,这是通过一个

我对您使用的gradle插件的理解是,这是通过以下方式完成的:

shadowJar {
  append('META-INF/spring.factories')
}