Firebird和Android JDBC驱动程序

时间:2019-07-14 14:39:10

标签: android kotlin firebird jaybird

Firebird有问题。我从不使用DB。服务器上的Firebird 1.5数据库。

  1. 将lib:firebird-full-2.2.4添加到libs文件夹

  2. 将此添加到Gradle:implementation fileTree('libs')

  3. 将此添加到MainActivity:

    Class.forName("org.firebirdsql.jdbc.FBDriver")
    
    val connection = DriverManager.getConnection(
    "jdbc:firebirdsql://jdbc:firebirdsql:193.###.###.13/3050:Scool",
    "###", "###")
    connection.close()
    
  4. 开始后我有这个:

  

E / AndroidRuntime:致命   例外:主要       进程:success.kneu,PID:12219       java.lang.NoClassDefFoundError:无法解决以下问题:Ljavax / resource / Referenceable;           在java.lang.Class.classForName(本机方法)           在java.lang.Class.forName(Class.java:400)           在java.lang.Class.forName(Class.java:326)           成功时.kneu.LoginActivity $ onCreate $ 1.onClick(LoginActivity.kt:48)           在android.view.View.performClick(View.java:5647)           在android.view.View $ PerformClick.run(View.java:22465)           在android.os.Handler.handleCallback(Handler.java:754)           在android.os.Handler.dispatchMessage(Handler.java:95)           在android.os.Looper.loop(Looper.java:163)           在android.app.ActivityThread.main(ActivityThread.java:6238)           在java.lang.reflect.Method.invoke(本机方法)           在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:933)           在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:823)        引起原因:java.lang.ClassNotFoundException:javax.resource.Referenceable           在java.lang.VMClassLoader.findLoadedClass(本地方法)           在java.lang.ClassLoader.findLoadedClass(ClassLoader.java:742)           在java.lang.ClassLoader.loadClass(ClassLoader.java:362)           在java.lang.ClassLoader.loadClass(ClassLoader.java:312)           在java.lang.Class.classForName(本机方法)           在java.lang.Class.forName(Class.java:400)           在java.lang.Class.forName(Class.java:326)           成功时.kneu.LoginActivity $ onCreate $ 1.onClick(LoginActivity.kt:48)           在android.view.View.performClick(View.java:5647)           在android.view.View $ PerformClick.run(View.java:22465)           在android.os.Handler.handleCallback(Handler.java:754)           在android.os.Handler.dispatchMessage(Handler.java:95)           在android.os.Looper.loop(Looper.java:163)           在android.app.ActivityThread.main(ActivityThread.java:6238)           在java.lang.reflect.Method.invoke(本机方法)           在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:933)           在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:823)        原因:java.lang.NoClassDefFoundError:无法解决以下问题:Ljavax / naming / Referenceable;           在java.lang.Class.classForName(本机方法)           在java.lang.Class.forName(Class.java:400)           在java.lang.Class.forName(Class.java:326)           成功时.kneu.LoginActivity $ onCreate $ 1.onClick(LoginActivity.kt:48)           在android.view.View.performClick(View.java:5647)           在android.view.View $ PerformClick.run(View.java:22465)           在android.os.Handler.handleCallback(Handler.java:754)           在android.os.Handler.dispatchMessage(Handler.java:95)           在android.os.Looper.loop(Looper.java:163)           在android.app.ActivityThread.main(ActivityThread.java:6238)           在java.lang.reflect.Method.invoke(本机方法)           在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:933)           在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:823)        原因:java.lang.ClassNotFoundException:在路径:DexPathList [[zip文件]中找不到类“ javax.naming.Referenceable”   “ /data/app/success.kneu-1/base.apk”,zip文件   “ /data/app/success.kneu-1/split_lib_dependencies_apk.apk”,压缩文件   “ /data/app/success.kneu-1/split_lib_slice_0_apk.apk”,压缩文件   “ /data/app/success.kneu-1/split_lib_slice_1_apk.apk”,压缩文件   “ /data/app/success.kneu-1/split_lib_slice_2_apk.apk”,压缩文件   “ /data/app/success.kneu-1/split_lib_slice_3_apk.apk”,压缩文件   “ /data/app/success.kneu-1/split_lib_slice_4_apk.apk”,压缩文件   “ /data/app/success.kneu-1/split_lib_slice_5_apk.apk”,压缩文件   “ /data/app/success.kneu-1/split_lib_slice_6_apk.apk”,压缩文件   “ /data/app/success.kneu-1/split_lib_slice_7_apk.apk”,压缩文件   “ /data/app/success.kneu-1/split_lib_slice_8_apk.apk”,压缩文件   “ /data/app/success.kneu-1/split_lib_slice_9_apk.apk"],nativeLibraryDirectories=[/data/app/success.kneu-1/lib/arm64,   / system / lib64,/ vendor / lib64]]           在dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)           在java.lang.ClassLoader.loadClass(ClassLoader.java:380)           在java.lang.ClassLoader.loadClass(ClassLoader.java:312)           在java.lang.Class.classForName(本机方法)           在java.lang.Class.forName(Class.java:400)           在java.lang.Class.forName(Class.java:326)           成功时.kneu.LoginActivity $ onCreate $ 1.onClick(LoginActivity.kt:48)           在android.view.View.performClick(View.java:5647)           在android.view.View $ PerformClick.run(View.java:22465)           在android.os.Handler.handleCallback(Handler.java:754)           在android.os.Handler.dispatchMessage(Handler.java:95)           在android.os.Looper.loop(Looper.java:163)           在android.app.ActivityThread.main(ActivityThread.java:6238)           在java.lang.reflect.Method.invoke(本机方法)           在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:933)           在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:823)   2019-07-14 17:37:03.815 12219-12219 /? I / Process:正在发送信号。 PID:   12219 SIG:9

1 个答案:

答案 0 :(得分:2)

Jaybird(Firebird JDBC驱动程序)在Android上不起作用。有一个Android port of Jaybird,但Jaybird团队并未维护。

错误本身表示由于缺少Android中的connector-api之类的JNDI类而导致加载javax.naming.Referenceable时出现问题。这表明您正在尝试使用普通的Jaybird,而不是Android的Jaybird端口。

尝试用Android端口中的一个替换您的Jaybird依赖项。

请注意,尽管通常您不应该使用JDBC驱动程序从Android连接到数据库。另请参见JDBC vs Web Service for Android