У меня есть относительно простой пакет из 8 классов Java, сгенерированных из схемы XML с использованием JAXB XJC.У меня также есть служебный класс для маршалирования и демаршализации экземпляров класса.
Это работает
Служебный класс может успешно разархивировать действительный документ XML в экземпляр корневого класса WordMergeInfo
.Например, это работает нормально:
JAXBContext jc = JAXBContext.newInstance(WordMergeInfo.class);
Unmarshaller um = jc.createUnmarshaller();
return (WordMergeInfo)um.unmarshal(inputStream);
Это не работает
Но сортировка строки не удалась.В этом коде:
JAXBContext jc = JAXBContext.newInstance(WordMergeInfo.class);
Marshaller m = jc.createMarshaller();
StringWriter writer = new StringWriter();
m.marshal(m, writer);
return writer.toString();
вызов Marshaller.marshal
завершается с ошибкой:
javax.xml.bind.JAXBException: class com.sun.xml.bind.v2.runtime.MarshallerImpl nor any of its super class is known to this context.
at com.sun.xml.bind.v2.runtime.JAXBContextImpl.getBeanInfo(JAXBContextImpl.java:594)
at com.sun.xml.bind.v2.runtime.XMLSerializer.childAsRoot(XMLSerializer.java:482)
at com.sun.xml.bind.v2.runtime.MarshallerImpl.write(MarshallerImpl.java:315)
at com.sun.xml.bind.v2.runtime.MarshallerImpl.marshal(MarshallerImpl.java:244)
Насколько я понимаю, nor any of its super class is known to this context
означает, что класс JAXB необходим для маршаллингане может быть найден.Так почему же нельзя найти один из классов реализации JAXB, когда тот же класс находится в трассировке стека?
Context
Эта ошибка обнаружилась в модульном тесте моего класса, runпод Maven.Зависимости:
- javax.xml.bind: jaxb-api: 2.1
- com.sun.xml.bind: jaxb-impl: 2.1.13
Я получил ту же ошибку с более ранними версиями (2.0 и 2.0.3, соответственно).
Путь к классу тестирования Maven:
C:\Users\mstra.CUSTMAN\Workspace\DARTCorrModule\xml\target\test-classes
C:\Users\mstra.CUSTMAN\Workspace\DARTCorrModule\xml\target\classes
C:\Users\mstra.CUSTMAN\.m2\repository\javax\xml\bind\jaxb-api\2.1\jaxb-api-2.1.jar
C:\Users\mstra.CUSTMAN\.m2\repository\javax\xml\stream\stax-api\1.0-2\stax-api-1.0-2.jar
C:\Users\mstra.CUSTMAN\.m2\repository\javax\activation\activation\1.1\activation-1.1.jar
C:\Users\mstra.CUSTMAN\.m2\repository\com\sun\xml\bind\jaxb-impl\2.1.13\jaxb-impl-2.1.13.jar
C:\Users\mstra.CUSTMAN\.m2\repository\junit\junit\4.8.2\junit-4.8.2.jar
C:\Users\mstra.CUSTMAN\.m2\repository\org\mockito\mockito-all\1.8.5\mockito-all-1.8.5.jar
C:\Users\mstra.CUSTMAN\.m2\repository\javax\ejb\ejb-api\3.0\ejb-api-3.0.jar
C:\Users\mstra.CUSTMAN\.m2\repository\org\slf4j\slf4j-api\1.6.4\slf4j-api-1.6.4.jar
Любое понимание приветствуется.