我正在生成一个 Xml 文件。这适用于开发,但不适用于我的测试服务器。生成它的代码如下所示:
JacksonXmlModule xmlModule = new JacksonXmlModule();
xmlModule.setDefaultUseWrapper(false);
ObjectMapper objectMapper = new XmlMapper(xmlModule);
objectMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
objectMapper.writeValue(xmlFile, myObject);
我有当前版本的woodstox作为maven中的依赖项:
<dependency>
<groupId>com.fasterxml.woodstox</groupId>
<artifactId>woodstox-core</artifactId>
<version>5.0.3</version>
</dependency>
jackson-core
我在那里也有对and jackson-dataformat-xml
(and jackson-datatype-jsr310
)的依赖。
这在开发中运行良好,但是当我将代码部署为 war 文件并使用测试机器上的码头服务器启动它时,会引发此错误:
com.fasterxml.jackson.core.JsonGenerationException: Underlying Stax XMLStreamWriter
(of type com.sun.xml.internal.stream.writers.XMLStreamWriterImpl) does not implement
Stax2 API natively and is missing method 'writeRaw': this breaks functionality such as
indentation that relies on it. You need to upgrade to using compliant Stax implementation
like Woodstox or Aalto
我验证了war文件中确实包含库。我发现它在ROOT.war\WEB-INF\lib\woodstox-core-5.0.3.jar
所以这让我不知道为什么会出现这个错误。对我来说,似乎没有使用woodstox,因此java回退到Stax1,尽管woodstox在存档中。
有什么建议可能在这里发生或我可能做错了什么?