亲爱的java编程人员,我使用了http://www.vogella.com/articles/JAXB/article.html中的一个例子
用于我的3个类,UserStorage,User和UserTest的JAXB XML用法
它工作正常,但它只是无关的
JAXBContext context = JAXBContext.newInstance(UserStorage.class);
Marshaller m = context.createMarshaller();
m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
the User class is ABSTRACT!, so it throws an
Run Code Online (Sandbox Code Playgroud)
线程"main"中的异常javax.xml.bind.UnmarshalException:无法创建platform.User的实例 - 链接异常:com.sun.xml.internal.bind.v2.runtime中的[java.lang.InstantiationException]. unmarshaller.UnmarshallingContext.handleEvent(UnmarshallingContext.java:648)位于com.sun.xml.internal.bind的com.sun.xml.internal.bind.v2.runtime.unmarshaller.Loader.reportError(Loader.java:236). com.sun.xml中的com.sun.xml.internal.bind.v2.runtime.unmarshaller.StructureLoader.startElement(StructureLoader.java:170)中的v2.runtime.unmarshaller.UnmarshallingContext.createInstance(UnmarshallingContext.java:615). com的com.sun.xml.internal.bind.v2.runtime.unmarshaller.UnmarshallingContext.startElement(UnmarshallingContext.java:465)中的internal.bind.v2.runtime.unmarshaller.UnmarshallingContext._startElement(UnmarshallingContext.java:487). com.sun.org.apache.xerces.internal.parsers.AbstractSAXPa中的sun.xml.internal.bind.v2.runtime.unmarshaller.SAXConnector.startElement(SAXConnector.java:135)rser.startElement(AbstractSAXParser.java:501)位于com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanStartElement(XMLNSDocumentScannerImpl.java:400)的com.sun.org.apache.xerces.internal.impl. XMLDocumentFragmentScannerImpl $ FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2756)位于com.sun.org.apache.erache.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:648)的com.sun.org.apache.xerces.internal.位于com.sun.org.apache上的com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:511)中的impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:140).解析器.XML11Configuration.parse(XML11Configuration.java:808)位于com.sun.org.apache.xerces.inarse.parsers.XML11Configuration.parse(XML11Configuration.java:737)的com.sun.org.apache.xerces.internal. parsers.XMLParser.parse(XMLParser.java:119)at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse (AbstractSAXParser.java:1205)com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl $ JAXPSAXParser.parse(SAXParserImpl.java:522)at com.sun.xml.internal.bind.v2.runtime.unmarshaller .UnmarshallerImpl.unmarshal0(UnmarshallerImpl.java:200)at com.sun.xml.internal.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal(UnmarshallerImpl.java:173)at javax.xml.bind.helpers.AbstractUnmarshallerImpl.unmarshal (AbstractUnmarshallerImpl.java:137)位于platform.UserTest.main(UserTest.java:77)的javax.xml.bind.helpers.AbstractUnmarshallerImpl.unmarshal(AbstractUnmarshallerImpl.java:194)引起:sun的java.lang.InstantiationException.在com.sun.xml.internal.bind.v2.ClassFactory.create0的java.lang.reflect.Constructor.newInstance(Constructor.java:513)中的reflect.InstantiationExceptionConstructorAccessorImpl.newInstance(InstantiationExceptionConstructorAccessorImpl.java:30)(ClassFactory.java: 112)在com.sun.xml.internal.bind.v2.runtime.ClassBeanInfoImpl.createInstance(ClassBeanInfoImpl.java:231)在 com.sun.xml.internal.bind.v2.runtime.unmarshaller.UnmarshallingContext.createInstance(UnmarshallingContext.java:609)... 20更多
有没有解决方案,所以我可以将User类绑定到XML,因为我可以使用用户详细信息保存XML文件,但是当我想要检索它时,它表明User类是抽象的,我有一个管理员,经纪人,股东子类,但到目前为止,在我的用户测试类中,我只创建了4个管理员来测试,谢谢,希望你能帮忙.
import platform.UserStorage;
import platform.User;
public class UserTest {
private static final String USER_XML = "user2.xml";
public static void main(String[] args) throws JAXBException, IOException {
ArrayList<User> userList = new ArrayList<User>();
// create …Run Code Online (Sandbox Code Playgroud)