如何在 Java 9 中创建没有外部库的 XML 文件?
How to create XML file without external libraries in Java 9?
How to create XML
file without external libraries in Java 9?
目前我正在使用 javax.xml.bind.JAXBContext
和 javax.xml.bind.Marshaller
classes 来做到这一点,但是在 Java 9 这些 classes 不再存在.因此,在使用 Java 9 时出现异常:java.lang.NoClassDefFoundError: javax/xml/bind/JAXBContext
.
我可以用较低的 Java 版本创建 XML
文件,但我需要它兼容 Java 9。
我现在创建 XML 文件的方式是:
1。创建 XML 元素 class
@XmlRootElement
public class Places {
private List<Athlete> athletes;
public List<Athlete> getAthletes() {
return athletes;
}
@XmlElement
public void setAthletes(List<Athlete> athletes) {
this.athletes = athletes;
}
}
2。创建 XML 文件
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 内部库。
您可以在 Java9 中使用这些库,但您需要需要包含它们的模块。确保您的 module-info.java
对 java.xml
模块有要求:
module myModule {
requires java.xml;
}
由于您需要 JAXB 模块的更多功能,因此需要在 module-info.java
文件中添加更多 requires
语句。例如,完成后,您的 module-info.java
文件可能看起来更像以下内容:
module myModule {
java.xml
java.xml.bind
java.xml.ws
java.xml.ws.annotation
}
有关详细信息,请参阅 。
How to create
XML
file without external libraries in Java 9?
目前我正在使用 javax.xml.bind.JAXBContext
和 javax.xml.bind.Marshaller
classes 来做到这一点,但是在 Java 9 这些 classes 不再存在.因此,在使用 Java 9 时出现异常:java.lang.NoClassDefFoundError: javax/xml/bind/JAXBContext
.
我可以用较低的 Java 版本创建 XML
文件,但我需要它兼容 Java 9。
我现在创建 XML 文件的方式是:
1。创建 XML 元素 class
@XmlRootElement
public class Places {
private List<Athlete> athletes;
public List<Athlete> getAthletes() {
return athletes;
}
@XmlElement
public void setAthletes(List<Athlete> athletes) {
this.athletes = athletes;
}
}
2。创建 XML 文件
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 内部库。
您可以在 Java9 中使用这些库,但您需要需要包含它们的模块。确保您的 module-info.java
对 java.xml
模块有要求:
module myModule {
requires java.xml;
}
由于您需要 JAXB 模块的更多功能,因此需要在 module-info.java
文件中添加更多 requires
语句。例如,完成后,您的 module-info.java
文件可能看起来更像以下内容:
module myModule {
java.xml
java.xml.bind
java.xml.ws
java.xml.ws.annotation
}
有关详细信息,请参阅