简体   繁体   English

休眠会话工厂Android

[英]Hibernate Session Factory Android

I'm trying to use Hibernate on Android. 我正在尝试在Android上使用Hibernate。 (Eclipse Android 2.2 SDK) (Eclipse Android 2.2 SDK)
It seems there is a compile error in line containing 似乎在包含的行中存在编译错误

HibernateUtility.getSessionFactory().openSession();  

Here's HibernateUtility Class: 这是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;
    }
}

The compile error in eclipse is: eclipse中的编译错误是:

The type javax.naming.Referenceable cannot be resolved. 无法解析javax.naming.Referenceable类型。 It is indirectly referenced from required .class files 从所需的.class文件间接引用它

I've copied a file rt.jar from my java sdk (Sun JDK macosx) which contains the package javax.namaing.* and the compile error seems to be solved. 我从Java sdk(Sun JDK macosx)复制了一个文件rt.jar,其中包含软件包javax.namaing。*,并且编译错误似乎已解决。 But I now get the runtime error below from Android SDK Logcat. 但是,我现在从Android SDK Logcat中获取以下运行时错误。

08-30 15:21:05.123: W/dalvikvm(240): VFY: unable to find class referenced in signature (Lorg/hibernate/SessionFactory;) 08-30 15:21:05.123: I/dalvikvm(240): Could not find method org.hibernate.SessionFactory.openSession, referenced from method com.example.testfordatabase.EtityDao.insert 08-30 15:21:05.123: W/dalvikvm(240): VFY: unable to resolve interface method 102: Lorg/hibernate/SessionFactory;.openSession ()Lorg/hibernate/classic/Session; 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: replacing opcode 0x72 at 0x000b 08-30 15:21:05.123: D/dalvikvm(240): VFY: dead code 0x000e-003f in Lcom/example/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): Could not find class 'org.hibernate.cfg.Configuration', referenced from method com.example.testfordatabase.HibernateUtility. 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: unable to resolve new-instance 65 (Lorg/hibernate/cfg/Configuration;) in Lcom/example/testfordatabase/HibernateUtility; 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: replacing opcode 0x22 at 0x0000 08-30 15:21:05.133: D/dalvikvm(240): VFY: dead code 0x0002-000f in Lcom/example/testfordatabase/HibernateUtility;. 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: unable to find class referenced in signature (Lorg/hibernate/SessionFactory;) 08-30 15:21:05.133: W/System.err(240): Initial SessionFactory creation failed.java.lang.NoClassDefFoundError: org.hibernate.cfg.Configuration 08-30 15:21:05.133: W/dalvikvm(240): Exception Ljava/lang/ExceptionInInitializerError; ()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; thrown during Lcom/example/testfordatabase/HibernateUtility;. 在Lcom / example / testfordatabase / HibernateUtility;中抛出。 08-30 15:21:05.133: D/AndroidRuntime(240): Shutting down VM 08-30 15:21:05.133: W/dalvikvm(240): threadid=1: thread exiting with uncaught exception (group=0x4001d800) 08-30 15:21:05.173: E/AndroidRuntime(240): FATAL EXCEPTION: main 08-30 15:21:05.173: E/AndroidRuntime(240): java.lang.ExceptionInInitializerError 08-30 15:21:05.173: E/AndroidRuntime(240): at com.example.testfordatabase.EtityDao.insert(EtityDao.java:35) 08-30 15:21:05.173: E/AndroidRuntime(240): at com.example.testfordatabase.MainActivity$1.onClick(MainActivity.java:34) 08-30 15:21:05.173: E/AndroidRuntime(240): at android.view.View.performClick(View.java:2408) 08-30 15:21:05.173: E/AndroidRuntime(240): at android.view.View$PerformClick.run(View.java:8816) 08-30 15:21:05.173: E/AndroidRuntime(240): at android.os.Handler.handleCallback(Handler.java:587) 08-30 15:21:05.173: E/AndroidRuntime(240): at android.os.Handler.dispatchMessage(Handler.java:92) 08-30 15:21:05.173: E/AndroidRuntime(240): at android.os.Looper.loop(Loope 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): at android.app.ActivityThread.main(ActivityThread.java:4627) 08-30 15:21:05.173: E/AndroidRuntime(240): at java.lang.reflect.Method.invokeNative(Native Method) 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): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 08-30 15:21:05.173: E/AndroidRuntime(240): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 08-30 15:21:05.173: E/AndroidRuntime(240): at dalvik.system.NativeStart.main(Native Method) 08-30 15:21:05.173: E/AndroidRuntime(240): Caused by: java.lang.ExceptionInInitializerError 08-30 15:21:05.173: E/AndroidRuntime(240): at com.example.testfordatabase.HibernateUtility.(HibernateUtility.java:31) 08-30 15:21:05.173: E/AndroidRuntime(240): ... 13 more 08-30 15:21:05.173: E/AndroidRuntime(240): Caused by: java.lang.NoClassDefFoundError: org.hibernate. 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) cfg.Configuration 08-30 15:21:05.173:E / AndroidRuntime(240):at com.example.testfordatabase.HibernateUtility。(HibernateUtility.java:27)

plz help :D thanks 请帮助:D谢谢

Not all standart java classes are available on android. 并非所有标准的Java类在android上都可用。 One of them is package javax.naming - that's why you get this porblem. 其中之一是程序包javax.naming-这就是为什么您遇到此问题的原因。 You may add missing classes from other sources though. 不过,您可以从其他来源添加缺少的类。 ( or even rip them orr rt.jar ) - but doing this you may end up duplicating complete java runtime. (甚至将其删除为or rt.jar)-但是这样做可能会导致复制完整的Java运行时。 I find that hibernate is a bit too heavyweight for android anyway. 无论如何,我发现休眠对于Android来说太重了。

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

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