使用XmlMapper时,Glassfish 3模块中的Stax2与应用程序类路径中的Stax2冲突

时间:2018-08-15 01:29:43

标签: java xml jackson glassfish stax

我正在尝试使用jackson-dataformat-xml包将JSON解析为XML。调用XmlMapper.writeValueAsString(string)方法时,将引发以下错误:

java.lang.NoSuchMethodError: org.codehaus.stax2.XMLStreamWriter2.closeCompletely()V
        at com.fasterxml.jackson.dataformat.xml.ser.ToXmlGenerator.close(ToXmlGenerator.java:981)
        at com.fasterxml.jackson.databind.ObjectMapper._configAndWriteValue(ObjectMapper.java:2727)
        at com.fasterxml.jackson.databind.ObjectMapper.writeValueAsString(ObjectMapper.java:2210)

当我打印出以下代码行时: org.codehaus.stax2.XMLStreamWriter2.class.getProtectionDomain().getCodeSource().getLocation().toString();

它将代码源指向意外目录:file:/C:/Program%20Files/sges-v3/glassfish/modules/woodstox-osgi.jar

似乎woodstox-osgi.jar中的stax2-api版本不包含此closeCompletely()方法,此外,它从该位置获取XMLStreamWriter2类的行为异常。 我希望为解决这一冲突提供一些帮助。在我的搜索中,我发现人们通过修改Maven依赖关系解决了此类问题,但是对于我正在开发的应用程序来说这是不可能的。有没有解决这个问题的方法?否则,将需要找到替代的stax实现,以将JSON解析为XML。

一些额外的信息。这是我应用程序的类路径中的jackson / stax jar:

jackson\jackson-annotations-2.2.3.jar
jackson\jackson-core-2.2.3.jar
jackson\jackson-databind-2.2.3.jar
jackson\jackson-dataformat-xml-2.2.3.jar
jackson\jackson-module-jaxb-annotations-2.2.3.jar
jackson\stax2-api-3.1.1.jar

0 个答案:

没有答案