繁体   English   中英

休眠会话工厂Android

[英]Hibernate Session Factory Android

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

HibernateUtility.getSessionFactory().openSession();  

这是HibernateUtility类:

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。*,并且编译错误似乎已解决。 但是,我现在从Android SDK 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; .openSession()Lorg / hibernate / classic / Session; 08-30 15:21:05.123:D / dalvikvm(240):VFY:在0x000b处替换操作码0x72 08-30 15:21:05.123:D / dalvikvm(240):VFY:Lcom / example中的无效代码0x000e-003f /testfordatabase/EtityDao;.insert(Lcom / example / testfordatabase / entity;)V 08-30 15:21:05.123:D / step1(240):Step1 08-30 15:21:05.133:E / dalvikvm(240) :找不到从方法com.example.testfordatabase.HibernateUtility引用的类'org.hibernate.cfg.Configuration'。 08-30 15:21:05.133:W / dalvikvm(240):VFY:无法解析Lcom / example / testfordatabase / HibernateUtility中的新实例65(Lorg / hibernate / cfg / Configuration;); 08-30 15:21:05.133:D / dalvikvm(240):VFY:在0x0000处替换操作码0x22 08-30 15:21:05.133:D / dalvikvm(240):VFY:Lcom / example中的无效代码0x0002-000f / testfordatabase / HibernateUtility;。 ()V 08-30 15:21:05.133:W / dalvikvm(240):VFY:找不到签名中引用的类(Lorg / hibernate / SessionFactory;)08-30 15:21:05.133:W / System.err (240):初始SessionFactory创建失败.java.lang.NoClassDefFoundError:org.hibernate.cfg.Configuration 08-30 15:21:05.133:W / dalvikvm(240):异常Ljava / lang / ExceptionInInitializerError; 在Lcom / example / testfordatabase / HibernateUtility;中抛出。 08-30 15:21:05.133:D / AndroidRuntime(240):关闭VM 08-30 15:21:05.133:W / dalvikvm(240):threadid = 1:线程退出且未捕获异常(group = 0x4001d800)08 -30 15:21:05.173:E / AndroidRuntime(240):致命例外:主要08-30 15:21:05.173:E / AndroidRuntime(240):java.lang.ExceptionInInitializerError 08-30 15:21:05.173:E / AndroidRuntime(240):com.example.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(Loope r.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):at java.lang.reflect.Method.invokeNative(本机方法)08-30 15:21:05.173:E / AndroidRuntime(240):at 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.system.NativeStart.main(本机方法) 08-30 15:21:05.173:E / AndroidRuntime(240):由以下原因引起:java.lang.ExceptionInInitializerError 08-30 15:21:05.173:E / AndroidRuntime(240):在com.example.testfordatabase.HibernateUtility。( HibernateUtility.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):at com.example.testfordatabase.HibernateUtility。(HibernateUtility.java:27)

请帮助:D谢谢

并非所有标准的Java类在android上都可用。 其中之一是程序包javax.naming-这就是为什么您遇到此问题的原因。 不过,您可以从其他来源添加缺少的类。 (甚至将其删除为or rt.jar)-但是这样做可能会导致复制完整的Java运行时。 无论如何,我发现休眠对于Android来说太重了。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM