How to create
XMLfile without external libraries in Java 9?
В настоящее время я использую для этого классы javax.xml.bind.JAXBContext и javax.xml.bind.Marshaller, но в Java 9 эти классы больше не существуют. Итак, при использовании Java 9 я получаю исключение: java.lang.NoClassDefFoundError: javax/xml/bind/JAXBContext.
Я могу создать файл XML с более низкой версией Java, но мне нужно, чтобы он был совместим и с Java 9.
@XmlRootElement
public class Places {
private List<Athlete> athletes;
public List<Athlete> getAthletes() {
return athletes;
}
@XmlElement
public void setAthletes(List<Athlete> athletes) {
this.athletes = athletes;
}
}
List<Athlete> athletes = new ArrayList<>();
Places places = new Places();
places.setAthletes(athletes);
JAXBContext context = JAXBContext.newInstance(Places.class);
Marshaller marshaller = context.createMarshaller();
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
marshaller.marshal(places, new File(outputPath);
marshaller.marshal(places, System.out);
P.S .: Я искал ответ на этот вопрос, но ничего не нашел, так что это не должно быть дублированным вопросом.
Как я уже упоминалДля этого мне нужно использовать только внутренние библиотеки Java.
Вы читали документацию по API? docs.oracle.com/javase/9/docs/api/java.xml-summary.html
@lexicore Из-за задания, которое мне дала компания, где я ищу работу




Вы можете использовать эти библиотеки в Java 9, но вам потребуется модуль, который их содержит. Убедитесь, что вашему module-info.java требуется модуль java.xml:
module myModule {
requires java.xml;
}
Поскольку вам требуется больше функциональности от модулей JAXB, вам нужно будет добавить больше операторов requires в ваш файл module-info.java. Например, ваш файл module-info.java может выглядеть следующим образом, когда вы закончите:
module myModule {
java.xml
java.xml.bind
java.xml.ws
java.xml.ws.annotation
}
Для получения дополнительной информации см. Как разрешить java.lang.NoClassDefFoundError: javax/xml/bind/JAXBException в Java 9.