Java Hibernate会话工厂Android
我正在尝试在Android上使用Hibernate。(Eclipse Android 2.2 SDK)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 {
似乎在包含的行中有一个编译错误
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。你在什么地方听到不同的声音了吗?也许人们并没有努力:我很确定冬眠可以缓解疼痛