Firebird和Android JDBC驱动程序 [英] Firebird and Android JDBC Driver

查看:140
本文介绍了Firebird和Android JDBC驱动程序的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

Firebird出现问题.我从来没有使用过DB.服务器上的Firebird 1.5数据库.

have problem with Firebird. I have never work with DB. DB on server firebird 1.5.

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

  1. Add lib: firebird-full-2.2.4 to libs folder

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

Add this to Gradle: implementation fileTree('libs')

将此添加到MainActivity:

Add this to MainActivity:

Class.forName("org.firebirdsql.jdbc.FBDriver")

val connection = DriverManager.getConnection(
"jdbc:firebirdsql://jdbc:firebirdsql:193.###.###.13/3050:Scool",
"###", "###")
connection.close()

  • 开始后我有这个:

  • After start I have this:

    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",zip文件 "/data/app/success.kneu-1/split_lib_slice_4_apk.apk",zip文件 "/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

    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上不起作用.有一个 Jaybird的Android端口,但Jaybird团队并未对其进行维护.

    Jaybird, the Firebird JDBC driver, does not work on Android. There is an Android port of Jaybird, but it is not maintained by the Jaybird team.

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

    The error itself indicates a problem with loading the connector-api because of missing JNDI classes like javax.naming.Referenceable in Android. This would indicate that you are trying to use the normal Jaybird and not the Android port of Jaybird.

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

    Try and replace your Jaybird dependency with one from the Android port.

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

    Be aware though that in general you should not use JDBC drivers to connect to a database from Android. See also JDBC vs Web Service for Android.

    这篇关于Firebird和Android JDBC驱动程序的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

  • 查看全文
    登录 关闭
    扫码关注1秒登录
    发送“验证码”获取 | 15天全站免登陆