2013-11-24 36 views
0

我試圖用類似的技術配置我的工程:PersistanceContext EntityManager空指針爲什麼?

Glassfish的4.0 Maven的 JSF 2.0 休眠3+ RichFaces的4+ JPA 2.0

有人能指出我與包括Maven原型技術?如果不是,你能告訴我哪個罐子需要運行嗎?我試圖配置它的正常項目,但有問題,看起來像這樣:

Caused by: java.lang.AbstractMethodError: org.hibernate.ejb.EntityManagerFactoryImpl.createEntityManager(Ljavax/persistence/SynchronizationType;Ljava/util/Map;)Ljavax/persistence/EntityManager; 
    at com.sun.enterprise.container.common.impl.EntityManagerWrapper.getNonTxEMFromCurrentInvocation(EntityManagerWrapper.java:268) 
+0

什麼是「正常工程」? –

回答

0

似乎你有classpath問題。當JVM嘗試調用抽象方法實現並且沒有找到它時,AbstractMethodError被JVM拋出。所以,你有什麼:

  1. 有老接口的EntityManagerFactory,沒有createEntityManager(SynchronizationType,Map)方法
  2. 而且有舊的實現舊的EntityManagerFactory接口,叫的EntityManagerFactory
  3. 您可以使用新的EntityManagerFactory的界面,添加了createEntityManager(SynchronizationType,Map)。 Java EE在沒有它的情況下會得到一箇舊的實現。

也許是地獄嗎?仔細觀察項目使用的所有jar文件(我想你應該看到你的部署路徑中的WEB-INF/lib目錄)。由於它們都只是zip文件,解壓縮它們並搜索org/hibernate/ejb/EntityManagerFactoryImpl.class文件。對於包含此文件的每個jar文件,請使用javap來列出EntityManagerFactoryImpl類的所有方法。