java - 设置一个第三方 JAR 的类路径以包含另一个带有 Ant 的类路径

标签 java ant classpath

如何设置一个第三方 JAR 的类路径以在 Ant 中包含第二个第三方 JAR?

我需要它来运行来自 this site 的 Vanilla Using Schematron with ANT 示例. (我 99% 确定您不需要知道 Schematron 是什么来回答这个问题。) 该示例的说明位于页面顶部附近的简短 PDF 链接中。我将所有文件的内容直接从 PDF 复制粘贴到 Eclipse 中。

然后我从上述站点下载了 ant-schematron-2010-04-14.jar,并从 SAXON SourceForge 页面获得了 saxon9he.jar。我还更改了构建文件以匹配。带有行号且没有注释,它看起来像这样:

09 <project name="schematron-ant-sample" default="validate">
14     <taskdef name="schematron"
15              classname="com.schematron.ant.SchematronTask"
16              classpath="lib/ant-schematron-2010-04-14.jar; lib/saxon9he.jar" />
22     <target name="validate" description="Test with a Fileset">
23         <schematron schema="sch/sample.sch" failonerror="false">
24             <fileset dir="xml" includes="*.xml" />
25         </schematron>
26     </target>
27 </project>

当我运行构建文件时,出现以下错误:

validate:

BUILD FAILED
C:\Users\gdawes\Documents\workspace\SchematronAntExample\build.xml:23: /
javax.xml.transform.TransformerFactoryConfigurationError: Provider /
net.sf.saxon.TransformerFactoryImpl not found

Total time: 265 milliseconds

如果 SAXON JAR 未在 schematron 的类路径中列出,则会发生类似的错误。我已经确认 TransformerFactoryImpl 存在于 SAXON JAR 中,但我不知道如何让 Schematron 代码识别它。我应该如何设置类路径? (或者,如果我错了并且这不是类路径问题,我该如何使构建成功?)

最佳答案

classpath<taskdef>应该只包含:lib/ant-schematron-2010-04-14.jar ,类似于 Using Schematron for Ant by example 中提供的示例

<?xml version="1.0" encoding="UTF-8"?>
<project name="schematron-ant-sample" default="validate">
  <taskdef name="schematron"
      classname="com.schematron.ant.SchematronTask"
      classpath="lib/ant-schematron-2010-04-14.jar" />
  <target name="validate" description="Test with a Fileset">
    <schematron schema="sch/sample.sch" failonerror="false">
      <fileset dir="xml" includes="*.xml" />
    </schematron>
  </target>
</project>

除了更正 <taskdef> , 放置 saxon9he.jar在 Ant 库文件夹中生成 net.sf.saxon.TransformerFactoryImpl可用并解决错误(在带有 Ant 1.8.2 的 Ubuntu Linux 上测试)。

关于java - 设置一个第三方 JAR 的类路径以包含另一个带有 Ant 的类路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11871215/

相关文章:

java - JVM 总是会创建 Object 类的实例吗

java - 如何使用 build.xml 在 java 代码中设置属性

java - NoClassDefFoundError 到底什么时候抛出?

java - 如何运行使用 buildr 并使用依赖项构建的 java 应用程序?

java - 一步一步...使用 NFC 读取标签

java - 添加检查以验证该字段没有收到某种类型的字符

java - 通过 Spring Social 获取完整 Linkedin 个人资料时出现 400 错误请求错误

在 Ant 中按数字对文件集排序

flash - 使用 GradleFX 插件将多个 ant mxmlc 目标转换为 gradle

java - JAR 资源上一级