java xml中classpath_java – 在build.xml中设置ANT CLASSPATH

这似乎是Schematron任务中的一个错误. Ant任务加载Saxon XSLT处理器的方式要求Saxon在系统类路径上,即使任务本身位于子类加载器上也是如此.

private TransformerFactory _factory = TransformerFactoryImpl.newInstance();

(其中TransformerFactoryImpl是Saxon的TransformerFactory实现),但实际上TransformerFactoryImpl没有定义自己的newInstance()方法,因此这是TransformerFactory的继承newInstance,它将根据javax的值查找合适的工厂. xml.transform.TransformerFactory系统属性. Ant任务does set this system property:

System.setProperty("javax.xml.transform.TransformerFactory",

"net.sf.saxon.TransformerFactoryImpl");

但是TransformerFactory.newInstance()将在系统类加载器上查找此类,而不必在加载schematron任务的类加载器上查找.

修复方法是将ValidatorFactory第120行简单地更改为

private TransformerFactory _factory = new TransformerFactoryImpl();

这将绕过所有动态查找并直接实例化正确的类.有了这个修复就位

classname="com.schematron.ant.SchematronTask"

classpath="lib/ant-schematron.jar:lib/saxon9he.jar"/>

会正常工作.

我建议你向开发人员报告这个bug,但是项目看起来并不特别活跃,所以你可能只需构建自己的本地fork而不是……

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值