我需要你的帮助来解决Tapestry和JAXB之间的冲突。 该错误是:

  

com.sun.xml.stream.ZephyrParserFactory   不能被转换为   org.codehaus.stax2.XMLInputFactory2

我找到一个方法来解决它,但它是码头: http://tynamo.org /挂毯RestEasy的+指南

该解决方案似乎是增加一个系统属性声明:

  

javax.xml.stream.XMLInputFactory = com.ctc.wstx.stax.WstxInputFactory

但我不知道如何为Tomcat做到这一点。我尝试做诠释,他的web.xml中,像:

<env-entry>
     <env-entry-name>
      javax.xml.stream.XMLInputFactory
     </env-entry-name>
     <env-entry-value>
      com.ctc.wstx.stax.WstxInputFactory
     </env-entry-value>
     <env-entry-type>
      com.ctc.wstx.stax.WstxInputFactory
     </env-entry-type>
    </env-entry>

没有成功...

我也知道另一种解决方案:)

THX帮我

有帮助吗?

解决方案

<env-entry>属性是可访问通过JNDI,而不是作为系统性能,因此将无法工作。系统属性必须在命令行上启动的Java虚拟机时被指定。

你如何开始你的tomcat?如果它是通过命令行,尝试添加这个片段到JAVA_OPTS:

java -Djavax.xml.stream.XMLInputFactory=com.ctc.wstx.stax.WstxInputFactory [...]

您应该能够做到这一点无论是作为一个环境变量(Unix的:export JAVA_OPTS='-Djavax.xml.stream.XMLInputFactory=com.ctc.wstx.stax.WstxInputFactory',Windows系统:SET JAVA_OPTS='-Djavax.xml.stream.XMLInputFactory=com.ctc.wstx.stax.WstxInputFactory'),或在Tomcat启动脚本本身(catalina.sh/catalina.bat)

如果您从Eclipse中启动Tomcat,你可以通过调试配置添加参数| JRE | VM参数。只需粘贴-Djavax.xml.stream.XMLInputFactory=com.ctc.wstx.stax.WstxInputFactory,你是好。

编辑基于评论:的AFAIK,你不能指定在web.xml系统属性,对不起

一个想法:可以编程方式设置系统属性。也许你可以你的Tapestry应用模块中添加System.setProperty()的调用。这将有JAXB初始化之前被执行。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top