Exception in thread “main” javax.xml.bind.PropertyException: name: eclipselink.media-type value: application/json

前端 未结 3 901
鱼传尺愫
鱼传尺愫 2021-02-12 16:28

I\'m attempting to follow the example located here but get an javax.xml.bind.PropertyException. I receive this exception because of the following line of code:

m         


        
相关标签:
3条回答
  • 2021-02-12 16:54

    You need to have the EclipseLink jars (2.4.0 or newer) on your class path, and a jaxb.properties file in the same package as the classes used to bootstrap theJAXBContext with the following entry:

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

    Below is a link to an example on GitHub that you can run to see everything working:

    • https://github.com/bdoughan/blog20110819
    0 讨论(0)
  • 2021-02-12 17:10

    If you don't want to add a jaxb.properties file, you can do this all in Java code. This is especially helpful for legacy systems where you don't want to risk affecting the classpath by introducing a new jaxb.properties file.

    import org.eclipse.persistence.jaxb.JAXBContextFactory;
    import org.eclipse.persistence.jaxb.JAXBContextProperties;
    import org.eclipse.persistence.jaxb.xmlmodel.ObjectFactory;
    
    //Set the various properties you want
    Map<String, Object> properties = new HashMap<>();
    properties.put(JAXBContextProperties.MEDIA_TYPE, "application/json");
    properties.put(JAXBContextProperties.JSON_INCLUDE_ROOT, false);
    
    //Create a Context using the properties
    JAXBContext jaxbContext = 
        JAXBContextFactory.createContext(new Class[]  {
           MyClass.class,    ObjectFactory.class}, properties);
    Marshaller jaxbMarshaller = jaxbContext.createMarshaller();
    
    //Marshall the object
    StringWriter stringWriter = new StringWriter();
    jaxbMarshaller.marshal(myObject, stringWriter);
    String json = stringWriter.toString();
    
    0 讨论(0)
  • 2021-02-12 17:21

    To my main method I added (you could also use -D):

    System.setProperty("javax.xml.bind.context.factory","org.eclipse.persistence.jaxb.JAXBContextFactory");
    
    0 讨论(0)
提交回复
热议问题