(我刚刚在 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/