#xml #wildfly #stax
Вопрос:
Попытка преобразовать Staxsource в StreamResult выдает ошибку (при запуске Wildfly 24 с использованием Adoptopenjdk 11-hotspot)
Но тот же код, выполненный из модульного теста, проходит без ошибок и правильно выполняет работу (с использованием Adoptopenjdk 11-hotspot).
Здесь я получаю ошибку :
14:50:15,455 ERROR [com.x.x.x.x.x.DeliveryParser] (default task-1) javax.xml.transform.TransformerException: Source object passed to ''{0}'' has no contents.
ERROR: 'Source object passed to ''{0}'' has no contents.'
Вот исходный код :
private static String readElementString(final XMLStreamReader streamReader) {
try {
StringWriter stringWriter = new StringWriter();
Transformer transformer = TransformerFactory.newInstance().newTransformer();
transformer.setOutputProperty(OutputKeys.ENCODING, StandardCharsets.UTF_8.toString());
StAXSource stAXSource = new StAXSource(streamReader);
StreamResult streamResult = new StreamResult(stringWriter);
transformer.transform(stAXSource, streamResult); <-- error is thrown here
return stringWriter.toString();
...
Не могу найти ничего, что я мог бы использовать в сети.
У кого-нибудь есть подсказка для меня ?
Тх — Фабьен
Ответ №1:
Вот решение, которое я нашел :
При модульном тестировании «Фабрика преобразований» выдает мне экземпляр «com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl», которые исходят из JDK.
На Wildlfy фабрика выдает мне экземпляр «org.apache.xalan.xsltc.trax.ТрансформерИмпл».
Это последнее вызывает у меня ошибку, когда я пытаюсь преобразовать StaxSource. Я не знаю, почему.
Итак, теперь я использую этот код ниже, чтобы создать экземпляр TransformerFactory из JDK :
TransformerFactory.newDefaultInstance();
на месте
TransformerFactory.newInstance();