gpt4 book ai didi

java - 最终的 war 文件中引用了不正确的类

转载 作者:行者123 更新时间:2023-11-28 23:58:59 25 4
gpt4 key购买 nike

我的项目有很多 jar 。两个 jar 有一个同名的特定类。这两个 jar 都包含一个名为 Response 的类。 jar A 中的 Response 类之一有一个方法 abc()。我正在服务类中创建此类的引用并调用此方法 abc()。当我使用maven生成war文件并在我的本地系统Tomcat中与Eclipse集成的项目中运行该项目时,找到了该方法并且没有异常。但是当我在外部 AWS Tomcat 中部署相同的 war 文件时,我得到了 java.lang.NoSuchMethodError。这一定是因为在 war 文件中,引用必须属于另一个没有方法 abc() 的 jar 中的类。我不能删除这些类,因为它们都被使用了。帮助。

最佳答案

如果您只希望 A 的类包含在您的 uber jar 中,我相信您可以通过在您的 POM 文件中使用类似于以下指令的内容,将类从 jar B 中排除在您的 uber jar 中: -

           <dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-mapreduce-client-core</artifactId>
<version>${hadoop.version}</version>
<exclusions>
<exclusion>
<groupId>org.apache.commons</groupId>
<artifactId>commons-math3</artifactId>
</exclusion>
</exclusions>
</dependency>

上面的指令将包括 hadoop 客户端核心 jar 中的所有依赖 jar,除了 commons-math3,所以如果你想使用 apache commons-math3 的更新版本(或者说不同版本),你可以明确地添加它作为 POM 中的依赖项,而不必担心来自 hadoop 核心库的 commons-math3 是否会被包裹在你的 uber jar 中

关于java - 最终的 war 文件中引用了不正确的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43900626/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com