android - Firebird 和 Android JDBC 驱动程序

标签 android kotlin firebird jaybird

Firebird 有问题。我从未与 DB 合作过。服务器 firebird 1.5 上的数据库。

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

  2. 将其添加到 Gradle:实现 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: FATAL EXCEPTION: main Process: success.kneu, PID: 12219 java.lang.NoClassDefFoundError: Failed resolution of: Ljavax/resource/Referenceable; at java.lang.Class.classForName(Native Method) at java.lang.Class.forName(Class.java:400) at java.lang.Class.forName(Class.java:326) at success.kneu.LoginActivity$onCreate$1.onClick(LoginActivity.kt:48) at android.view.View.performClick(View.java:5647) at android.view.View$PerformClick.run(View.java:22465) at android.os.Handler.handleCallback(Handler.java:754) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:163) at android.app.ActivityThread.main(ActivityThread.java:6238) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:933) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:823) Caused by: java.lang.ClassNotFoundException: javax.resource.Referenceable at java.lang.VMClassLoader.findLoadedClass(Native Method) at java.lang.ClassLoader.findLoadedClass(ClassLoader.java:742) at java.lang.ClassLoader.loadClass(ClassLoader.java:362) at java.lang.ClassLoader.loadClass(ClassLoader.java:312) at java.lang.Class.classForName(Native Method)  at java.lang.Class.forName(Class.java:400)  at java.lang.Class.forName(Class.java:326)  at success.kneu.LoginActivity$onCreate$1.onClick(LoginActivity.kt:48)  at android.view.View.performClick(View.java:5647)  at android.view.View$PerformClick.run(View.java:22465)  at android.os.Handler.handleCallback(Handler.java:754)  at android.os.Handler.dispatchMessage(Handler.java:95)  at android.os.Looper.loop(Looper.java:163)  at android.app.ActivityThread.main(ActivityThread.java:6238)  at java.lang.reflect.Method.invoke(Native Method)  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:933)  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:823)  Caused by: java.lang.NoClassDefFoundError: Failed resolution of: Ljavax/naming/Referenceable; at java.lang.Class.classForName(Native Method)  at java.lang.Class.forName(Class.java:400)  at java.lang.Class.forName(Class.java:326)  at success.kneu.LoginActivity$onCreate$1.onClick(LoginActivity.kt:48)  at android.view.View.performClick(View.java:5647)  at android.view.View$PerformClick.run(View.java:22465)  at android.os.Handler.handleCallback(Handler.java:754)  at android.os.Handler.dispatchMessage(Handler.java:95)  at android.os.Looper.loop(Looper.java:163)  at android.app.ActivityThread.main(ActivityThread.java:6238)  at java.lang.reflect.Method.invoke(Native Method)  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:933)  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:823)  Caused by: java.lang.ClassNotFoundException: Didn't find class "javax.naming.Referenceable" on path: DexPathList[[zip file "/data/app/success.kneu-1/base.apk", zip file "/data/app/success.kneu-1/split_lib_dependencies_apk.apk", zip file "/data/app/success.kneu-1/split_lib_slice_0_apk.apk", zip file "/data/app/success.kneu-1/split_lib_slice_1_apk.apk", zip file "/data/app/success.kneu-1/split_lib_slice_2_apk.apk", zip file "/data/app/success.kneu-1/split_lib_slice_3_apk.apk", zip file "/data/app/success.kneu-1/split_lib_slice_4_apk.apk", zip file "/data/app/success.kneu-1/split_lib_slice_5_apk.apk", zip file "/data/app/success.kneu-1/split_lib_slice_6_apk.apk", zip file "/data/app/success.kneu-1/split_lib_slice_7_apk.apk", zip file "/data/app/success.kneu-1/split_lib_slice_8_apk.apk", zip file "/data/app/success.kneu-1/split_lib_slice_9_apk.apk"],nativeLibraryDirectories=[/data/app/success.kneu-1/lib/arm64, /system/lib64, /vendor/lib64]] at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56) at java.lang.ClassLoader.loadClass(ClassLoader.java:380) at java.lang.ClassLoader.loadClass(ClassLoader.java:312) at java.lang.Class.classForName(Native Method)  at java.lang.Class.forName(Class.java:400)  at java.lang.Class.forName(Class.java:326)  at success.kneu.LoginActivity$onCreate$1.onClick(LoginActivity.kt:48)  at android.view.View.performClick(View.java:5647)  at android.view.View$PerformClick.run(View.java:22465)  at android.os.Handler.handleCallback(Handler.java:754)  at android.os.Handler.dispatchMessage(Handler.java:95)  at android.os.Looper.loop(Looper.java:163)  at android.app.ActivityThread.main(ActivityThread.java:6238)  at java.lang.reflect.Method.invoke(Native Method)  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:933)  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:823)  2019-07-14 17:37:03.815 12219-12219/? I/Process: Sending signal. PID: 12219 SIG: 9

最佳答案

Jaybird(Firebird JDBC 驱动程序)无法在 Android 上运行。有一个Android port of Jaybird ,但它不是由 Jaybird 团队维护的。

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

尝试将您的 Jaybird 依赖项替换为来自 Android 端口的依赖项。

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

关于android - Firebird 和 Android JDBC 驱动程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57028365/

相关文章:

java - 如何知道android中使用的权限列表?

android - 在 map View 中点击气球应该开始另一个 Activity

java - 正则表达式检测字符是否重复超过三次

kotlin - JPA - 使用参数值作为选择的返回

kotlin - Java lambda 类型推断在 Kotlin 中未按预期工作

sql - 在 firebird 中使用 "from"内部的变量

c# - 在 .Net 中检索 Firebird ODS 版本

sql - Firebird(如何使用 SQL 查找父类别)

android - 无法使用 volley 库比较 android 中 “if” 语句中的 JSON 字符串响应

android - 适用于 Mac 的 NDK r10b 32 和 64 位构建器