MOXy JAXB javax. xml. bind. PropertyException

I follow this example: http://wiki.eclipse.org/EclipseLink/Examples/MOXy/JSON_Twitter

Now I have this class:

import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBElement;
import javax.xml.bind.Marshaller;
import javax.xml.bind.Unmarshaller;
import javax.xml.transform.stream.StreamSource;

import org.eclipse.persistence.jaxb.MarshallerProperties;

public class Demo {

    public static void main(String[] args) throws Exception {
        JAXBContext jc = JAXBContext.newInstance(Foo.class);

        Unmarshaller unmarshaller = jc.createUnmarshaller();
        unmarshaller.setProperty("eclipselink.media-type","application/json");
        unmarshaller.setProperty("eclipselink.json.include-root",false);
        StreamSource source = new StreamSource("http://test.url/path/to/resource");
        JAXBElement<Foo> jaxbElement = unmarshaller.unmarshal(source,Foo.class);

        System.out.println(jaxbElement.getValue().getFoo());

        Marshaller marshaller = jc.createMarshaller();
        marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT,true);
        marshaller.setProperty(MarshallerProperties.MEDIA_TYPE,"application/json");
        marshaller.setProperty("eclipselink.json.include-root",false);
        marshaller.marshal(jaxbElement,System.out);
    }
}

I have JAXB properties:

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

If I run this code, I get:

Exception in thread "main" javax.xml.bind.PropertyException: name: eclipselink.media-type value: application/json
    at javax.xml.bind.helpers.AbstractUnmarshallerImpl.setProperty(AbstractUnmarshallerImpl.java:352)
    at com.sun.xml.internal.bind.v2.runtime.unmarshaller.UnmarshallerImpl.setProperty(UnmarshallerImpl.java:450)
    at com.example.JavaSEClient.main(JavaSEClient.java:19)

How can I solve this problem?

I searched so and Google, and none of these answers worked:

PropertyException when setting Marshaller property with eclipselink. media-type value: application/json JAXB javax. xml. bind. PropertyException

Solution

You need to make sure your JAXB The properties file is in the same package as the domain class used to boot jaxbcontext, and eclipse link Moxy is on the classpath

> http://blog.bdoughan.com/search/label/jaxb.properties

If you are using maven, JAXB The properties file should be located in the following location, assuming that foo is located in a location named com example. In Foo's package:

> src / main / resources / com / example / foo / jaxb. properties > src / main / java / com / example / foo / Foo. class

For a complete example, see:

> https://github.com/bdoughan/blog20110819

The content of this article comes from the network collection of netizens. It is used as a learning reference. The copyright belongs to the original author.
THE END
分享
二维码
< <上一篇
下一篇>>