Firebird有问题。我从不使用DB。服务器上的Firebird 1.5数据库。
将lib:firebird-full-2.2.4
添加到libs文件夹
将此添加到Gradle:implementation fileTree('libs')
将此添加到MainActivity:
Class.forName("org.firebirdsql.jdbc.FBDriver")
val connection = DriverManager.getConnection(
"jdbc:firebirdsql://jdbc:firebirdsql:193.###.###.13/3050:Scool",
"###", "###")
connection.close()
开始后我有这个:
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
答案 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。