线程“main” javax.xml.bind.PropertyException: name: eclipselink.media-type value: application/json 中的异常

2022-09-02 11:51:04

我试图遵循位于此处的示例,但获得javax.xml.bind.PropertyException。由于以下代码行,我收到此异常:

marshaller.setProperty(MarshallerProperties.MEDIA_TYPE, "application/json");

我已经从字面上复制/粘贴了上面列出的示例,因此我的代码正是您在那里看到的。搜索SO和Google对此没有帮助,并认为我会将其带给SO的天才们以获得一些帮助。任何帮助将不胜感激,使用JSON和XML进行(反)序列化,json.org,Jackson和JAXB已经变成了一个黑色和无底洞,已经消耗了我近一个月的生命。

我的第一印象是我没有正确指定eclipselink运行时(如此处所述),但这并没有产生解决方案。

堆栈跟踪:

Exception in thread "main" javax.xml.bind.PropertyException: name: eclipselink.media-type value: application/json
   at javax.xml.bind.helpers.AbstractMarshallerImpl.setProperty(AbstractMarshallerImpl.java:358)
   at com.sun.xml.internal.bind.v2.runtime.MarshallerImpl.setProperty(MarshallerImpl.java:527)
   at HelloWorld.main(HelloWorld.java:17)

这就是我正在做的,

enter image description here


答案 1

您需要在类路径上有 EclipseLink jar(2.4.0 或更高版本),并且文件与用于引导 的类位于同一包中,并具有以下条目:jaxb.propertiesJAXBContext

javax.xml.bind.context.factory=org.eclipse.persistence.jaxb.JAXBContextFactory

下面是GitHub上一个示例的链接,您可以运行该示例以查看所有内容是否正常工作:


答案 2

到我的主要方法,我添加了(你也可以使用):-D

System.setProperty("javax.xml.bind.context.factory","org.eclipse.persistence.jaxb.JAXBContextFactory");