我在使用两个 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/