java - 两个 jar 具有相同的包名、相同的类名和相同的方法名

标签 java spring-boot java-8 jar classloader

我在使用两个 jar 的 Spring Boot 应用程序中遇到这个问题。在这些 jar 中,有两个具有相同包名和类名的类以及一个具有相同名称的方法。当类加载器从不同的 jar 加载类并尝试调用此方法时,就会出现问题,如果先加载 jar A,则调用方法,一切正常,但如果先调用 jar B,则在运行时抛出 NOSUCHMETHODERROR 异常。你能帮忙解决这个问题吗?有没有一种方法可以强制类加载器首先加载特定的 jar,总是在 Spring boot 应用程序中,或者可能有任何其他解决方案。

注意:我使用的是 JAVA 8,我无权访问这些 jar 文件的源代码。

最佳答案

如果您将这些 jar 作为依赖项加载,您可以通过

将其从 Maven 中排除
<exclusions>
   <exclusion>
       <groupId>org.XXXX</groupId>
        <artifactId>jar1-api</artifactId>
    </exclusion>
</exclusions> 

关于java - 两个 jar 具有相同的包名、相同的类名和相同的方法名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59029845/

相关文章:

java - 将静态网页与 WAR 文件分离

java - 如何检查 body 是否几乎停止在 libgdx + box2d 中移动

spring - 使用 Spring-Boot 启动 Tomcat 上下文时出错 : java. lang.ClassNotFoundException : org. apache.tomcat.dbcp.dbcp.BasicDataSource

java - 如何使用 Java 8 在 Spring 4 中执行 queryForList?

java - 在 JQuery 中使用 ajax 方法 .get() 和 .post() 来添加到购物车

java - 为什么我的 ArrayList 中的对象数组无法保留它们的值?

spring - 如何使用eureka、zuul服务器在tomcat中部署不同的spring boot微服务?

Spring 启动 : read list from yaml using @Value or @ConfigurationProperties

css - JavaFX 元素结构

java - 有没有办法为 Java 的字符集名称添加别名