Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.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 maven无法区分不同JAR中的两个相似类_Java_Jar_Maven 3 - Fatal编程技术网

Java maven无法区分不同JAR中的两个相似类

Java maven无法区分不同JAR中的两个相似类,java,jar,maven-3,Java,Jar,Maven 3,我正在使用Maven 3并尝试构建一个jar。现在有一个类存在于两个不同的依赖jar中。虽然接口中的方法不同,但是maven试图在不同的jar中获得类中定义的方法。那么,如何确保该类是从另一个jar中选取的呢? 例如,所需类别为xyz.class,存在于两个不同的罐中,如下所示: jar1:com/mycompany/xyz.class jar2:com/mycompany/xyz.class 我想jar1中的xyz.class是maven正在学习的,但我想要jar2中的那个 谢谢与Maven相

我正在使用Maven 3并尝试构建一个jar。现在有一个类存在于两个不同的依赖jar中。虽然接口中的方法不同,但是maven试图在不同的jar中获得类中定义的方法。那么,如何确保该类是从另一个jar中选取的呢? 例如,所需类别为xyz.class,存在于两个不同的罐中,如下所示: jar1:com/mycompany/xyz.class jar2:com/mycompany/xyz.class 我想jar1中的xyz.class是maven正在学习的,但我想要jar2中的那个
谢谢

与Maven相比,这更像是一个Java编译问题。查看以下问题的答案:


您需要为这种情况定义自定义类加载器。

您能详细说明一下吗?Maven构建您的jar(比如说MyJar),在您的jar中有一个类(比如说MyClass),它使用jar1和jar2中定义的xyz.class。您已经通过pom.xml中的标记向这两个jar添加了依赖项。现在你说maven从jar1中获取xyz.class是什么意思?毕竟,maven只是构建了您自己的jar(MyJar.jar),它根本不应该包含xyz.class。它应该拥有的只是作为已编译二进制文件的MyClass.class(以及为这个Jar定义的其他类。在运行时,一些xyz.class应该是可用的。事实上,maven无法构建MyJar,并显示构建失败,无法找到方法。这个方法出现在jar2的xyz.class中,而不是JAR1的xyz.class中。除非你弄清楚到底发生了什么,否则我想知道你在尝试什么g to在理想情况下是错误的。我认为,maven将选择类路径中首先出现的类xyz,并且您不能在编译时处理它。通常情况下,您的情况根本不应该发生,除非您尝试使用同一个jar(不同版本)。