Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/396.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java RCP eclipse项目中的JAXB_Java_Eclipse_Jpa_Jaxb_Rcp - Fatal编程技术网

Java RCP eclipse项目中的JAXB

Java RCP eclipse项目中的JAXB,java,eclipse,jpa,jaxb,rcp,Java,Eclipse,Jpa,Jaxb,Rcp,我一直在尝试使用JAXB绑定来读取java应用程序中的xml文件。 到目前为止,我已经能够完成以下步骤: File file = new File("path/to/my.xml"); JAXBContext jaxbContext = JAXBContext.newInstance(testxml.Device.class); Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller(); Device device = (D

我一直在尝试使用JAXB绑定来读取java应用程序中的xml文件。 到目前为止,我已经能够完成以下步骤:

File file = new File("path/to/my.xml");
JAXBContext jaxbContext = JAXBContext.newInstance(testxml.Device.class);
Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();
Device device = (Device) jaxbUnmarshaller.unmarshal(file);
System.out.println(device.getName());
  • 为我拥有的.xml生成.xsd
  • 使用jaxb-compiler.cmd生成java类(我在windows上运行)
  • 使用生成的“device.java”、“objectfactory.java”和jaxb.properties
  • 创建执行以下步骤的java应用程序:

    File file = new File("path/to/my.xml");
    JAXBContext jaxbContext = JAXBContext.newInstance(testxml.Device.class);
    Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();
    Device device = (Device) jaxbUnmarshaller.unmarshal(file);
    System.out.println(device.getName());
    
注意,这个应用程序也有问题,它在JAXBContext::newInstance上抱怨 javax.xml.bind.JAXBException -除此之外:

    [java.lang.ClassNotFoundException:org.eclipse.persistence.jaxb.JAXBContextFactory]
为了解决这个问题,我按照论坛的建议将项目转换为JPA项目,并在过程中为EclipseLink定义用户库(将其链接到EclipseLink v 2.6.2,我已下载)

我正在从事的项目是一个EclipseRCP。它需要读取XML文件的内容。 我尝试了相同的步骤,在EclipseMars中创建了样例RCP项目,并向其中添加了我的XMLJava类,但得到了相同的错误。 尝试从包资源管理器执行相同的过程:配置>>转换为JPA并没有解决问题

我检查了.classpath以验证是否列出了eclipselink,并且它是。在第一次调用获取JAXB上下文时总是失败

根据论坛的其他建议,我尝试:

jaxbContext = JAXBContextFactory.createContext("my_package", Device.class.getClassLoader());
这在同一个类上给出了java.lang.NoClassDefFoundError

如果我在eclipse的项目资源管理器中查看该项目,我可以看到eclipselink库,并且我可以深入eclipselink.jar并在其中找到有问题的“org.eclipse.persistence.jaxb.JAXBContextFactory”类

到目前为止,看看Lars Vogel的网站,教程很棒,只要我不尝试在其中使用JAXB,RCP生成就可以工作。此外,Blaise Doughan的博客和评论非常有意义,只是这种组合(RCP+EclipseLink)对我根本不起作用:(

任何关于如何解决这一问题的想法都将不胜感激