Java Hibernate会话工厂Android

Java Hibernate会话工厂Android,java,android,hibernate,Java,Android,Hibernate,我正在尝试在Android上使用Hibernate。(Eclipse Android 2.2 SDK) 似乎在包含的行中有一个编译错误 HibernateUtility.getSessionFactory().openSession(); 下面是休眠类: public class HibernateUtility { private static final SessionFactory sessionFactory; static { try {

我正在尝试在Android上使用Hibernate。(Eclipse Android 2.2 SDK)
似乎在包含的行中有一个编译错误

HibernateUtility.getSessionFactory().openSession();  
下面是休眠类:

public class HibernateUtility {

    private static final SessionFactory sessionFactory;

    static {
        try {
            // Create the SessionFactory from standard (hibernate.cfg.xml) 
            // config file.
            sessionFactory = new Configuration().configure().buildSessionFactory();
        } catch (Throwable ex) {
            // Log the exception. 
            System.err.println("Initial SessionFactory creation failed." + ex);
            throw new ExceptionInInitializerError(ex);
        }
    }

    public static SessionFactory getSessionFactory() {
        return sessionFactory;
    }
}
eclipse中的编译错误是:

无法解析javax.naming.Referenceable类型。它是 从必需的.class文件间接引用

我从java sdk(Sun JDK macosx)复制了一个文件rt.jar,其中包含javax.namaing.*包,编译错误似乎已经解决。但我现在从AndroidSDK Logcat获得下面的运行时错误

08-30 15:21:05.123:W/dalvikvm(240):VFY:找不到类 签名中引用(Lorg/hibernate/SessionFactory;)08-30 15:21:05.123:I/dalvikvm(240):找不到方法 org.hibernate.SessionFactory.openSession,引用自方法 com.example.testfordatabase.EtityDao.insert 08-30 15:21:05.123: W/dalvikvm(240):VFY:无法解析接口方法102: Lorg/hibernate/SessionFactory;。开放会话 ()Lorg/hibernate/classic/Session;2008-30 15:21:05.123:D/dalvikvm(240): VFY:在0x000b 08-30 15:21:05.123处替换操作码0x72: D/dalvikvm(240):VFY:中的死代码0x000e-003f Lcom/example/testfordatabase/EtityDao;。插入 (Lcom/example/testfordatabase/entity;)V 08-30 15:21:05.123: D/step1(240):step1 08-30 15:21:05.133:E/dalvikvm(240):无法 查找从方法引用的类“org.hibernate.cfg.Configuration” com.example.testfordatabase.hibernate。08-30 15:21:05.133:W/dalvikvm(240):VFY:无法解析新实例65 (Lorg/hibernate/cfg/Configuration;)中的 Lcom/示例/测试数据库/休眠性;08-30 15:21:05.133: D/dalvikvm(240):VFY:在0x0000 08-30处替换操作码0x22 15:21:05.133:D/dalvikvm(240):VFY:in中的死代码0x0002-000f Lcom/example/testfordatabase/hibernateutibility;。()V 08-30 15:21:05.133:W/dalvikvm(240):VFY:找不到中引用的类 签名(Lorg/hibernate/SessionFactory;)08-30 15:21:05.133: W/System.err(240):初始会话工厂创建 failed.java.lang.NoClassDefFoundError:org.hibernate.cfg.Configuration 08-30 15:21:05.133:W/dalvikvm(240):例外 Ljava/lang/ExceptionInInitializeError;在 Lcom/example/testfordatabase/hibernateutibility;。08-30 15:21:05.133:D/AndroidRuntime(240):关闭VM 08-30 15:21:05.133:W/dalvikvm(240):threadid=1:线程退出 未捕获异常(组=0x4001d800)08-30 15:21:05.173: E/AndroidRuntime(240):致命异常:main 08-30 15:21:05.173: E/AndroidRuntime(240):java.lang.ExceptionInInitializeError 08-30 15:21:05.173:E/AndroidRuntime(240):在 testfordatabase.EtityDao.insert(EtityDao.java:35)08-30 15:21:05.173:E/AndroidRuntime(240):在 com.example.testfordatabase.MainActivity$1.onClick(MainActivity.java:34) 08-30 15:21:05.173:E/AndroidRuntime(240):在 android.view.view.performClick(view.java:2408)08-30 15:21:05.173: E/AndroidRuntime(240):在 android.view.view$PerformClick.run(view.java:8816)08-30 15:21:05.173: E/AndroidRuntime(240):在 android.os.Handler.handleCallback(Handler.java:587)08-30 15:21:05.173:E/AndroidRuntime(240):在 android.os.Handler.dispatchMessage(Handler.java:92)08-30 15:21:05.173:E/AndroidRuntime(240):在 android.os.Looper.loop(Looper.java:123)08-30 15:21:05.173: E/AndroidRuntime(240):在 android.app.ActivityThread.main(ActivityThread.java:4627)08-30 15:21:05.173:E/AndroidRuntime(240):在 java.lang.reflect.Method.Invokenactive(本机方法)08-30 15:21:05.173:E/AndroidRuntime(240):在 java.lang.reflect.Method.invoke(Method.java:521)08-30 15:21:05.173: E/AndroidRuntime(240):在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 08-30 15:21:05.173:E/AndroidRuntime(240):在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)08-30 15:21:05.173:E/AndroidRuntime(240):在 dalvik.系统NativeStar.主要(本机方法)08-30 15:21:05.173: E/AndroidRuntime(240):由以下原因引起: java.lang.Exception初始化错误08-30 15:21:05.173: E/AndroidRuntime(240):在 HibernateUtibility.(hibernateUtibility.java:31) 08-30 15:21:05.173:E/AndroidRuntime(240):。。。13更多08-30 15:21:05.173:E/AndroidRuntime(240):由以下原因引起: java.lang.NoClassDefFoundError:org.hibernate.cfg.Configuration 08-30 15:21:05.173:E/AndroidRuntime(240):在 HibernateUtibility.(hibernateUtibility.java:27)

plz帮助:D
谢谢

并非所有的标准java类都可以在android上使用。其中一个是包javax.naming——这就是为什么会出现这个问题。但是,您可以从其他来源添加缺少的类。
(或者甚至撕开它们或rt.jar)——但这样做可能会复制完整的java运行时。我发现hibernate对于android来说有点太重了

并非所有标准java类都可以在android上使用。其中一个是包javax.naming——这就是为什么会出现这个问题。但是,您可以从其他来源添加缺少的类。
(或者甚至撕开它们或rt.jar)——但这样做可能会复制完整的java运行时。我发现hibernate对于android来说有点太重了

根据这个答案,Android不支持Hibernate。你在什么地方听到过不同的声音吗?也许人们没有努力:我很确定Hibernate依赖于字节码操作。由于Dalvik中的字节码完全不同,我怀疑如果不进行重大的兼容性工作,它将无法工作。事实上,Hibernate是少数几个真正不依赖字节码manip的持久性提供程序(也是唯一的JPA提供程序AFAIK)之一。它的工作方式实际上是使用运行时生成的代理。仅供参考…根据这个答案,Android不支持Hibernate。你在什么地方听到不同的声音了吗?也许人们并没有努力:我很确定冬眠可以缓解疼痛