簡體   English   中英

無法實例化類型objectfactory

[英]cannot instantiate the type objectfactory

嘗試實例化ObjectFactory時,我在Eclipse中遇到以下編譯錯誤:

cannot instantiate the type objectfactory

在下面的行中引發此編譯錯誤:

objectFactory = new ObjectFactory();//throws error: "Cannot instantiate the type ObjectFactory"

調用類的完整代碼如下:

package maintest;

import java.io.File;
import javax.naming.spi.ObjectFactory;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBElement;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Unmarshaller;

public class Main {

    private static JAXBContext context;
    private static ObjectFactory objectFactory;

    public static void main(String[] args) {
        try {setUp();} catch (Exception e) {e.printStackTrace();}
        unmarshal();
    }

    protected static void setUp() throws Exception {
        context = JAXBContext.newInstance("generated");
        objectFactory = new ObjectFactory();//throws error: "Cannot instantiate the type ObjectFactory"
    }

    public static <PurchaseOrderType> void unmarshal(){
        Unmarshaller unmarshaller;
        try {
            unmarshaller = context.createUnmarshaller();
            final Object object = unmarshaller.unmarshal(new File("src/test/samples/po.xml"));
        } catch (JAXBException e) {e.printStackTrace();}
    }
}

如何解決此錯誤?

我的猜測是您導入了錯誤的ObjectFactory。 您可能想要的是xjc(與JAXB相關)生成的,而不是javax.naming.spi(JNDI的服務提供程序接口)生成的。

編輯

javax.xml.bind.JAXBException:“生成”不包含ObjectFactory.class或jaxb.in​​dex

確保“生成的”包包含ObjectFactory(帶有@XmlRegistry批注的包,而不是javax.naming.spi.ObjectFactory的實現)或jaxb.in​​dex文件。

除非您自己實現JNDI實現,否則您可以從代碼中刪除javax.naming.spi.ObjectFactory。

嘗試以下

    import javax.naming.spi.ObjectFactory;
    import javax.naming.Context;
    import javax.naming.Name;
    import java.util.Hashtable;

    ObjectFactory objFactory = new ObjectFactory() {

    @Override
    public Object getObjectInstance(Object o, Name name, Context cntxt, Hashtable<?, ?> hshtbl) throws Exception {
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
    }
};

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM