java - 导入 Ant 构建脚本时获取 xerces 类的 ClassCastException

标签 java ant gradle

(我刚刚在 Gradle 论坛上问过这个问题,但我得出的结论是 SO 效果更好。)

我正在考虑修改现有的 Gradle 构建脚本。它当前尝试执行“ant”以便从特定的 Ant 构建脚本运行目标。这似乎是特定于平台的,并且在我的 Windows 机器上失败了。我正在尝试将其转换为导入构建脚本并执行所需转换任务的更便携(?)过程。

我做的第一件事就是在现有目标之前添加“ant.importBuild”语句,然后运行它。失败的根本原因如下:

Caused by: java.lang.ClassCastException: org.apache.xerces.parsers.XIncludeAwareParserConfiguration cannot be cast to org.apache.xerces.xni.parser.XMLParserConfiguration
    at org.apache.xerces.parsers.SAXParser.<init>(Unknown Source)
    at org.apache.xerces.parsers.SAXParser.<init>(Unknown Source)
    at org.apache.xerces.jaxp.SAXParserImpl$JAXPSAXParser.<init>(Unknown Source)
    at org.apache.xerces.jaxp.SAXParserImpl.<init>(Unknown Source)
    at org.apache.xerces.jaxp.SAXParserFactoryImpl.newSAXParser(Unknown Source)
    at org.apache.tools.ant.util.JAXPUtils.newSAXParser(JAXPUtils.java:215)
    at org.apache.tools.ant.util.JAXPUtils.getNamespaceXMLReader(JAXPUtils.java:172)
    at org.apache.tools.ant.helper.ProjectHelper2.parse(ProjectHelper2.java:244)
    at org.apache.tools.ant.helper.ProjectHelper2.parse(ProjectHelper2.java:177)
    at org.apache.tools.ant.ProjectHelper.configureProject(ProjectHelper.java:93)
    at org.apache.tools.ant.ProjectHelper$configureProject.call(Unknown Source)
    at org.gradle.api.internal.project.DefaultAntBuilder.importBuild(DefaultAntBuilder.groovy:76)

从网络上的相关事件来看,很明显存在类路径冲突(没有告诉我任何不明显的信息),但我不知道如何解决这个问题。

有问题的构建脚本来自 Mockito 代码库 ( https://github.com/mockito/mockito ),因此您可以在那里看到它们。我只在执行 Ant 目标的位置之前添加了“ant.importBuild 'build-ant.xml'”。

最佳答案

我在 xerces 之前遇到过类似的问题,这是由于 gradle 默认使用较新的版本,因此自动使用了较新的版本 xerces。

我会建议你使用gradle的依赖任务来检查

关于java - 导入 Ant 构建脚本时获取 xerces 类的 ClassCastException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24537841/

相关文章:

gradle - 具有自定义gradle插件的Gradle复合构建在IntelliJ中失败: “Could not find method api() for arguments”

eclipse - Gradle依赖项和Gradle依赖项之间的Eclipse差异(持久化)

gradle - xsd2java-no.nils.wsdl2java

java - 应用程序启动后初始化spring bean字段

regex - Ant 的正则表达式否定

java - Ant 自定义条件typedef:确保在编译期间可以使用编译的类(鸡肉和鸡蛋)

ant - Ivy:获取 Javadoc 和源代码

java - Android 翻译的 Canvas 矩形碰撞

java - JMockit : How to avoid code from superclasses' constructors

java - 从技术上讲,Oracle JDK 和 OpenJDK 之间的主要区别是什么?