gpt4 book ai didi

java - 执行 org.apache.maven.plugins :maven-shade-plugin:1. 3.1 :shade: java. lang.AbstractMethodError: null 时遇到 API 不兼容

转载 作者:行者123 更新时间:2023-11-30 10:58:09 28 4
gpt4 key购买 nike

在尝试构建旧版本的 Apache CXF 2.2.2 时,我一直收到 ma​​ven-shade-plugin 使用的 XmlAppendingTransformer 产生的错误:无法连接以获取 http://java.sun.com/dtd/properties.dtd 的 DTD (由文件 META-INF/cxf/extensions.xml 引用)

我尝试使用从 1.3.1 版开始的 maven-shade-plugin 提供的 ignoreDtd 选项来解决这个问题。

但现在我遇到了另一个更奇怪的错误:

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-shade-plugin:1.3.1:shade (default) on project cxf-bundle: Execution default of goal org.apache.maven.plugins:maven-shade-plugin:1.3.1:shade failed: An API incompatibility was encountered while executing org.apache.maven.plugins:maven-shade-plugin:1.3.1:shade: java.lang.AbstractMethodError: null
[ERROR] -----------------------------------------------------
[ERROR] realm = plugin>org.apache.maven.plugins:maven-shade-plugin:1.3.1
[ERROR] strategy = org.codehaus.plexus.classworlds.strategy.SelfFirstStrategy
[ERROR] urls[0] = file:/C:/Users/postese/.m2/repository/org/apache/maven/plugins/maven-shade-plugin/1.3.1/maven-shade-plugin-1.3.1.jar
[ERROR] urls[1] = file:/C:/Users/postese/libraries/apache-cxf-2.2.2-patched-src/buildtools/target/cxf-buildtools-2.2.2.jar
[ERROR] urls[2] = file:/C:/Users/postese/.m2/repository/pmd/pmd/4.2/pmd-4.2.jar
[ERROR] urls[3] = file:/C:/Users/postese/.m2/repository/ant/ant/1.6/ant-1.6.jar
[ERROR] urls[4] = file:/C:/Users/postese/.m2/repository/junit/junit/3.8.1/junit-3.8.1.jar
[ERROR] urls[5] = file:/C:/Users/postese/.m2/repository/org/codehaus/plexus/plexus-utils/1.5.5/plexus-utils-1.5.5.jar
[ERROR] urls[6] = file:/C:/Users/postese/.m2/repository/asm/asm/3.2/asm-3.2.jar
[ERROR] urls[7] = file:/C:/Users/postese/.m2/repository/asm/asm-commons/3.2/asm-commons-3.2.jar
[ERROR] urls[8] = file:/C:/Users/postese/.m2/repository/asm/asm-tree/3.2/asm-tree-3.2.jar
[ERROR] urls[9] = file:/C:/Users/postese/.m2/repository/org/jdom/jdom/1.1/jdom-1.1.jar
[ERROR] urls[10] = file:/C:/Users/postese/.m2/repository/org/apache/maven/shared/maven-dependency-tree/1.1/maven-dependency-tree-1.1.jar
[ERROR] Number of foreign imports: 1
[ERROR] import: Entry[import from realm ClassRealm[project>org.apache.cxf:cxf-bundle:2.2.2, parent: ClassRealm[maven.api, parent: null]]]
[ERROR]
[ERROR] -----------------------------------------------------

哪个库或插件导致“API 不兼容”?

最佳答案

经过大量挖掘并尝试逐一消除 ma​​ven-shade-plugin 使用的 ResourceTransformers,我找到了罪魁祸首:

显然现在问题不是由 XmlAppendingTransformer 引起的,而是 Apache CXF 定义的两个 ResourceTransformer:

apache-cxf-2.2.2-patched-src\buildtools\src\main\java\org\apache\cxf\maven:

CXFAllTransformer.java
PluginTransformer.java

CXF 2.2.2 中定义的两个转换器不兼容 maven-shade-plugin 1.3 版中定义的新ResourceTransformer 接口(interface)。 1,因为缺少这个新方法:

public void processResource(String resource, InputStream is, List relocators) throws IOException {

它们已在 CXF 2.2.12 中“修复”,其中包含此方法。

所以我的“修复”是将这两个转换器的源代码从 CXF 2.2.12 的源代码复制到 CXF 2.2.2 的“修补”源代码中。

关于java - 执行 org.apache.maven.plugins :maven-shade-plugin:1. 3.1 :shade: java. lang.AbstractMethodError: null 时遇到 API 不兼容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32382445/

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