我正在尝试在 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) :找不到类“org.hibernate.cfg.Configuration”,从方法 com.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: 在 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): Initial SessionFactory creation failed.java.lang.NoClassDefFoundError: org.hibernate.cfg.Configuration 08-30 15:21:05.133: W/dalvikvm(240): Exception 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): 致命异常: 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): 在 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:
请帮助:D谢谢