[英]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.index
確保“生成的”包包含ObjectFactory(帶有@XmlRegistry批注的包,而不是javax.naming.spi.ObjectFactory的實現)或jaxb.index文件。
除非您自己實現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.