2011-03-27 21 views

回答

1

这似乎是惊人的答案:

对于每个Xalan的实现中使用一个单独的类加载器,并在

META-INF\services\称为

javax.xml.transform.TransformerFactory 

编辑它添加一个文件,并把它的唯一内容类装载器将使用的Xalan实现,例如:

com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl 

注:这里的好处是,作为反对到正规的类加载代表团META-INF\services正在搜索在当前的类加载器第一,在那里为类是在父,那么系统搜索,和只有那么在孩子classloder

+0

另请参阅:http://stackoverflow.com/questions/5447633/how-to-prevent -xalan-JAR-说,有-META-INF服务 - 使用javax-XML变换变换 – 2011-03-27 09:06:37

0

jdk中包含一些xalan版本。对于大多数用法,我个人的经验是使用这个版本就足够了。即使它可能是以前的版本,现在有没有新的xalan开发?我更喜欢使用包含的,经过严格测试的版本。

我不认为必须在同一个jdk中使用xsl变换器是一个好主意(即使我猜测它可以完成)。如果你确实需要使用Xalan的一些更新的版本,而不是JDK一个,你可以引荐本篇FAQ:http://xml.apache.org/xalan-j/faq.html#faq-N100EF

我全部剥离特定的Xalan依赖于大的应用程序,只使用嵌入式之一。作为FOP的库,虽然他们以前假装需要一些特定的xalan jar,但没有它就运行得很好,并且它解决了很多类加载问题(java ee app server在某些情况下在xalan打包时给出问题)。

+0

我有XSLs只适用于旧的Xalan由于我不推荐使用的API,并且因为它们已经安装在客户端我甚至不能修复它们。但是使用旧的Xalan,一些新的iText功能不起作用...所以我的解决方案将其作为单独的JVM进程完全运行 – 2011-05-06 04:39:31

相关问题