ANDROID:java.lang.NoClassDefFoundError:解析失败:Lcom/mysql/cj/MysqlType

2023-12-31

我正在尝试将我的项目与 mysql 数据库连接,但我在驱动程序中收到此错误:

E/AndroidRuntime: FATAL EXCEPTION: main
        Process: com.example.catalyst, PID: 12531
        java.lang.NoClassDefFoundError: Failed resolution of: Lcom/mysql/cj/MysqlType;
            at com.mysql.cj.protocol.a.NativeProtocol.findMysqlType(NativeProtocol.java:1466)
            at com.mysql.cj.protocol.a.ColumnDefinitionReader.unpackField(ColumnDefinitionReader.java:134)
            at com.mysql.cj.protocol.a.ColumnDefinitionReader.read(ColumnDefinitionReader.java:77)
            at com.mysql.cj.protocol.a.ColumnDefinitionReader.read(ColumnDefinitionReader.java:40)
            at com.mysql.cj.protocol.a.NativeProtocol.read(NativeProtocol.java:1588)
            at com.mysql.cj.protocol.a.TextResultsetReader.read(TextResultsetReader.java:68)
            at com.mysql.cj.protocol.a.TextResultsetReader.read(TextResultsetReader.java:48)
            at com.mysql.cj.protocol.a.NativeProtocol.read(NativeProtocol.java:1601)
            at com.mysql.cj.protocol.a.NativeProtocol.readAllResults(NativeProtocol.java:1655)
            at com.mysql.cj.NativeSession.loadServerVariables(NativeSession.java:765)
            at com.mysql.cj.jdbc.ConnectionImpl.initializePropsFromServer(ConnectionImpl.java:1303)
            at com.mysql.cj.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:964)
            at com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:823)
            at com.mysql.cj.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:453)
            at com.mysql.cj.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:246)
            at com.mysql.cj.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:198)
            at java.sql.DriverManager.getConnection(DriverManager.java:569)
            at java.sql.DriverManager.getConnection(DriverManager.java:219)
            at modelo.Conexion.conectar(Conexion.java:24)
            at modelo.EnviarIngresos.ejecutarServicio(EnviarIngresos.java:27)
            at GUIs.QRscanner.enviarIngreso(QRscanner.java:75)
            at GUIs.QRscanner.onClick(QRscanner.java:42)
            at android.view.View.performClick(View.java:6297)
            at com.google.android.material.button.MaterialButton.performClick(MaterialButton.java:1119)
            at android.view.View$PerformClick.run(View.java:24797)
            at android.os.Handler.handleCallback(Handler.java:790)
            at android.os.Handler.dispatchMessage(Handler.java:99)
            at android.os.Looper.loop(Looper.java:164)
            at android.app.ActivityThread.main(ActivityThread.java:6626)
            at java.lang.reflect.Method.invoke(Native Method)
            at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:811)
         Caused by: java.lang.ClassNotFoundException: com.mysql.cj.MysqlType
            at java.lang.VMClassLoader.findLoadedClass(Native Method)
            at java.lang.ClassLoader.findLoadedClass(ClassLoader.java:738)
            at java.lang.ClassLoader.loadClass(ClassLoader.java:363)
            at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
            at com.mysql.cj.protocol.a.NativeProtocol.findMysqlType(NativeProtocol.java:1466) 
            at com.mysql.cj.protocol.a.ColumnDefinitionReader.unpackField(ColumnDefinitionReader.java:134) 
            at com.mysql.cj.protocol.a.ColumnDefinitionReader.read(ColumnDefinitionReader.java:77) 
            at com.mysql.cj.protocol.a.ColumnDefinitionReader.read(ColumnDefinitionReader.java:40) 
            at com.mysql.cj.protocol.a.NativeProtocol.read(NativeProtocol.java:1588) 
            at com.mysql.cj.protocol.a.TextResultsetReader.read(TextResultsetReader.java:68) 
            at com.mysql.cj.protocol.a.TextResultsetReader.read(TextResultsetReader.java:48) 
            at com.mysql.cj.protocol.a.NativeProtocol.read(NativeProtocol.java:1601) 
            at com.mysql.cj.protocol.a.NativeProtocol.readAllResults(NativeProtocol.java:1655) 
            at com.mysql.cj.NativeSession.loadServerVariables(NativeSession.java:765) 
            at com.mysql.cj.jdbc.ConnectionImpl.initializePropsFromServer(ConnectionImpl.java:1303) 
            at com.mysql.cj.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:964) 
            at com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:823) 
            at com.mysql.cj.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:453) 
            at com.mysql.cj.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:246) 
            at com.mysql.cj.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:198) 
            at java.sql.DriverManager.getConnection(DriverManager.java:569) 
            at java.sql.DriverManager.getConnection(DriverManager.java:219) 
            at modelo.Conexion.conectar(Conexion.java:24) 
            at modelo.EnviarIngresos.ejecutarServicio(EnviarIngresos.java:27) 
            at GUIs.QRscanner.enviarIngreso(QRscanner.java:75) 
            at GUIs.QRscanner.onClick(QRscanner.java:42) 
            at android.view.View.performClick(View.java:6297) 
            at com.google.android.material.button.MaterialButton.performClick(MaterialButton.java:1119) 
            at android.view.View$PerformClick.run(View.java:24797) 
            at android.os.Handler.handleCallback(Handler.java:790) 
            at android.os.Handler.dispatchMessage(Handler.java:99) 
            at android.os.Looper.loop(Looper.java:164) 
            at android.app.ActivityThread.main(ActivityThread.java:6626) 
            at java.lang.reflect.Method.invoke(Native Method) 
            at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438) 
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:811) 
         Caused by: java.lang.NoClassDefFoundError: Failed resolution of: Ljava/sql/SQLType;
            at com.mysql.cj.protocol.a.NativeProtocol.findMysqlType(NativeProtocol.java:1466) 
            at com.mysql.cj.protocol.a.ColumnDefinitionReader.unpackField(ColumnDefinitionReader.java:134) 
            at com.mysql.cj.protocol.a.ColumnDefinitionReader.read(ColumnDefinitionReader.java:77) 
            at com.mysql.cj.protocol.a.ColumnDefinitionReader.read(ColumnDefinitionReader.java:40) 
            at com.mysql.cj.protocol.a.NativeProtocol.read(NativeProtocol.java:1588) 
            at com.mysql.cj.protocol.a.TextResultsetReader.read(TextResultsetReader.java:68) 
            at com.mysql.cj.protocol.a.TextResultsetReader.read(TextResultsetReader.java:48) 
            at com.mysql.cj.protocol.a.NativeProtocol.read(NativeProtocol.java:1601) 
            at com.mysql.cj.protocol.a.NativeProtocol.readAllResults(NativeProtocol.java:1655) 
            at com.mysql.cj.NativeSession.loadServerVariables(NativeSession.java:765) 
            at com.mysql.cj.jdbc.ConnectionImpl.initializePropsFromServer(ConnectionImpl.java:1303) 
            at com.mysql.cj.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:964) 
            at com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:823) 
            at com.mysql.cj.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:453) 
            at com.mysql.cj.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:246) 
            at com.mysql.cj.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:198) 
            at java.sql.DriverManager.getConnection(DriverManager.java:569) 
            at java.sql.DriverManager.getConnection(DriverManager.java:219) 
            at modelo.Conexion.conectar(Conexion.java:24) 
            at modelo.EnviarIngresos.ejecutarServicio(EnviarIngresos.java:27) 
            at GUIs.QRscanner.enviarIngreso(QRscanner.java:75) 
            at GUIs.QRscanner.onClick(QRscanner.java:42) 
            at android.view.View.performClick(View.java:6297) 
            at com.google.android.material.button.MaterialButton.performClick(MaterialButton.java:1119) 
            at android.view.View$PerformClick.run(View.java:24797) 
            at android.os.Handler.handleCallback(Handler.java:790) 
            at android.os.Handler.dispatchMessage(Handler.java:99) 
            at android.os.Looper.loop(Looper.java:164) 
            at android.app.ActivityThread.main(ActivityThread.java:6626) 
            at java.lang.reflect.Method.invoke(Native Method) 
            at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438) 
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:811) 
         Caused by: java.lang.ClassNotFoundException: Didn't find class "java.sql.SQLType" on path: DexPathList[[zip file "/data/app/com.example.catalyst-r_unhHUpn3kJ_xqUGFYc4w==/base.apk"],nativeLibraryDirectories=[/data/app/com.example.catalyst-fumFeudS3H2K2UqSBclr7A==/lib/arm, /system/lib, /system/vendor/lib]]
            at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:125)
            at java.lang.ClassLoader.loadClass(ClassLoader.java:379)
            at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
            at com.mysql.cj.protocol.a.NativeProtocol.findMysqlType(NativeProtocol.java:1466) 
            at com.mysql.cj.protocol.a.ColumnDefinitionReader.unpackField(ColumnDefinitionReader.java:134) 
            at com.mysql.cj.protocol.a.ColumnDefinitionReader.read(ColumnDefinitionReader.java:77) 
            at com.mysql.cj.protocol.a.ColumnDefinitionReader.read(ColumnDefinitionReader.java:40) 
            at com.mysql.cj.protocol.a.NativeProtocol.read(NativeProtocol.java:1588) 
            at com.mysql.cj.protocol.a.TextResultsetReader.read(TextResultsetReader.java:68) 
            at com.mysql.cj.protocol.a.TextResultsetReader.read(TextResultsetReader.java:48) 
            at com.mysql.cj.protocol.a.NativeProtocol.read(NativeProtocol.java:1601) 
            at com.mysql.cj.protocol.a.NativeProtocol.readAllResults(NativeProtocol.java:1655) 
            at com.mysql.cj.NativeSession.loadServerVariables(NativeSession.java:765) 
            at com.mysql.cj.jdbc.ConnectionImpl.initializePropsFromServer(ConnectionImpl.java:1303) 
            at com.mysql.cj.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:964) 
            at com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:823) 
            at com.mysql.cj.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:453) 
            at com.mysql.cj.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:246) 
            at com.mysql.cj.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:198) 
            at java.sql.DriverManager.getConnection(DriverManager.java:569) 
            at java.sql.DriverManager.getConnection(DriverManager.java:219) 
            at modelo.Conexion.conectar(Conexion.java:24) 
            at modelo.EnviarIngresos.ejecutarServicio(EnviarIngresos.java:27) 
            at GUIs.QRscanner.enviarIngreso(QRscanner.java:75) 
            at GUIs.QRscanner.onClick(QRscanner.java:42) 
            at android.view.View.performClick(View.java:6297) 
            at com.google.android.material.button.MaterialButton.performClick(MaterialButton.java:1119) 
            at android.view.View$PerformClick.run(View.java:24797) 
            at android.os.Handler.handleCallback(Handler.java:790) 
            at android.os.Handler.dispatchMessage(Handler.java:99) 
            at android.os.Looper.loop(Looper.java:164) 
            at android.app.ActivityThread.main(ActivityThread.java:6626) 
            at java.lang.reflect.Method.invoke(Native Method) 
            at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438) 
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:811)

这些是我的依赖项(gradle):

dependencies {
    implementation 'androidx.appcompat:appcompat:1.3.0'
    implementation 'com.google.android.material:material:1.4.0'
    implementation 'androidx.constraintlayout:constraintlayout:2.0.4'
    implementation 'com.google.android.gms:play-services-maps:17.0.1'

    implementation files('libs\\UMLDesignTool.jar')
    implementation files('libs/mysql-connector-java-8.0.25.jar')
    testImplementation 'org.junit.jupiter:junit-jupiter-api:5.4.0'
    testImplementation 'org.junit.jupiter:junit-jupiter-engine:5.4.0'
    testImplementation 'org.junit.platform:junit-platform-launcher:1.0.0'
    androidTestImplementation 'androidx.test.ext:junit:1.1.3'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
    implementation 'com.journeyapps:zxing-android-embedded:3.4.0'
    androidTestImplementation 'org.junit.jupiter:junit-jupiter'
    androidTestImplementation 'org.testng:testng:6.9.6'
    implementation 'com.android.volley:volley:1.2.0'

} 

这是我进行连接的项目的类:

import android.os.StrictMode;

import java.sql.Connection;
import java.sql.DriverManager;

public class Conexion {
    private static final String JDBC_DRIVER = "com.mysql.cj.jdbc.Driver";
    private static final String DB_URL = "jdbc:mysql://localhost:3306/databasename";
    private static final String USER = "root";
    private static final String PASS = "";


    public Connection conectar(){

        StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
        StrictMode.setThreadPolicy(policy);

        Connection conexion = null;

        try {
            Class.forName(JDBC_DRIVER).newInstance();
            conexion= DriverManager.getConnection(DB_URL, USER, PASS);
        } catch (Exception ex) {
            ex.printStackTrace();
        }

        return conexion;
    }
    
}

该错误表明我没有驱动程序,但我有,我不知道该怎么办,也找不到任何与我有相同错误的帖子。


您无法在 Android 上使用最新版本的 MySQL Connector/J,因为它使用 Android 上不可用的类型和功能。这里的具体原因是类型com.mysql.cj.MysqlType实施java.sql.SQLType(Java 8 / JDBC 4.2中引入),并且通过错误判断Android中不存在该类型。过去,我还看到过与在正则表达式中使用命名组相关的错误,Android 也不支持(或曾经)支持这些错误。

一般来说,您不应该在 Android 上使用 JDBC,最好使用 REST API 在 Android 应用程序和数据库之间进行协调。但是,如果您确实想从 Android 使用 MySQL,则必须使用 MySQL Connector/J 5.1.x 而不是 8.0.x。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ANDROID:java.lang.NoClassDefFoundError:解析失败:Lcom/mysql/cj/MysqlType 的相关文章

随机推荐

  • 在mvc4的_layout中显示数据库中的图像

    大家好 我正在享受我的 layout如下 它按照我的要求工作 但是这里有几件事让我震惊 即我想显示我写的相应图像 如下所示 if Session UserName null div class logged in a title Your
  • 尽管存在链接,RSpec 仍应有_link 失败

    我的 RSpec 测试一直失败 subject page visit user path user it should have link Settings href edit user path user 但是当我自己加载页面时 我可以看
  • GET curl 调用不返回 JSON 对象

    curl D X GET H Authorization Basic H Content Type application json https jira net rest api latest search jql assignee ww
  • Php - Pdo SSH 隧道

    现在我正在创建一个 ssh 隧道 这样我就可以连接到我的远程数据库 但由于某种原因连接仍然拒绝 我的脚本 try host remote host sshuser ssh user sshpass ssh password dbuser d
  • Rust:如何逐块读取文件

    我对生锈完全陌生 我想逐块 块读取文件 每个块应包含 16 个字节 并将其 对于此测试场景 写入另一个文件 f2 所以我首先在这里尝试使用以下代码 let mut buf 0 16 let mut count 0 for byte in f
  • “const”和“val”有什么区别?

    我最近读到了有关const关键字 我很困惑 我找不到任何区别const和val关键字 我的意思是我们可以使用它们来创建一个不可变变量 还有什么我遗漏的吗 consts 是编译时常数 这意味着它们的值必须在编译时分配 这与vals 可以在运行
  • 获取当前位置后如何停止更新位置?

    我正在使用 Parse 并使用 geoPointForCurrentLocationInBackground 一旦收到位置 我就可以停止更新 而无需手动停止它 如何使用 CLLocationManager 收到位置后立即停止更新位置 Edi
  • 减少授权大小 python AWS Lambda@Edge

    我正在尝试在我的云前端发行版中实施授权 到目前为止它一直有效 直到我遇到尺寸限制 我现在遇到了 cloudfront 错误消息Max allowed 1048576 大约约为 1MB 但是安装完之后authlib包总大小约为6MB 我验证令
  • 干净地中断 HttpListener 的 BeginGetContext 方法

    我正在使用一个Http监听器 http msdn microsoft com en us library 34xswsd2 28v vs 100 29 aspx并使用开始获取上下文 http msdn microsoft com en us
  • 如何在 Codable 结构中添加自定义瞬态属性

    我有以下可按预期工作的可编码结构 struct VideoAlbum Codable let id image String let video mediaType JSONNull let type deleted createdOn S
  • 我应该将参数存储类说明符放在函数定义中还是同时放在声明和定义中?

    我正在努力将一些旧的 K R 代码移植到 ANSI C 因此我正在编写缺少的函数原型声明 很多函数定义的参数都带有寄存器存储类 但我不确定函数原型中是否可以省略寄存器存储类说明符 无论有或没有寄存器存储类特定声明 代码都能正确编译 我尝试了
  • 是否可以将多个静态库捆绑到一个静态库中[C++]?

    我为我的 C 代码创建了一个静态库 该库依赖于 CentOS 7 环境中的 Boost OpenSSL CURL 和 Threads 可以捆绑吗libboost system a libssl a libcrypto a libcurl a
  • 更改 MediaStream 对象的 VideoTrack

    简而言之 我正在尝试改变VideoTrack of a MediaStream object 文档 https developer mozilla org en US docs WebRTC MediaStream API https de
  • 如何在记事本++中进行非贪婪的正则表达式查询?

    我正在用乳胶写论文 不小心写了 cite 代替 cite 我可以手动浏览整个文档 但我想知道如何使用正则表达式在记事本 中执行此操作 我最初尝试过 cite 并替换为 cite 1 适用于简单的情况 例如 cite hello world
  • Oracle SQL:如何通过预定义贡献获取每个组的随机记录

    这是参考此处描述的先前问题 Oracle SQL 如何获取每组的随机记录 https stackoverflow com questions 36628912 oracle sql how to get random records by
  • Paypal付款成功后返回Ionic应用程序

    我创建了一个 Ionic 应用程序 我有一些物品要订购 付款是使用 Paypal 完成的 我使用 window open url 调用了一个 web url 它将我重定向到 Paypal 我能够成功付款 但是有人可以告诉我付款成功后如何返回
  • 在 SAS 中,捕获语法错误的好技术/选项是什么?

    在增强的编辑器中 颜色可能会给您提示 然而 在大型机上 我不相信编辑器中有任何东西可以帮助您 I use OPTIONS OBS 0 noreplace obs 0 选项指定从输入中读入 0 个观测值 dataset 和 NOREPLACE
  • iPhone开发-模拟内存警告

    背景 我有一个标签栏应用程序 每个选项卡都包含导航控制器 允许用户从一个视图转换到另一个视图 显示数据的深入信息 每个视图都由视图控制器处理 每个视图控制器类都有didReceiveMemoryWarning方法 通过从 Web 服务中提取
  • 透明背景WKWebView(NSView)

    我正在使用 Swift 构建 Mac 应用程序 因此 我想使 WKWebView 透明 以便它显示加载的 HTML 文本 但我的底层 NSWindow 的背景是可见的 我试过 webView layer backgroundColor NS
  • ANDROID:java.lang.NoClassDefFoundError:解析失败:Lcom/mysql/cj/MysqlType

    我正在尝试将我的项目与 mysql 数据库连接 但我在驱动程序中收到此错误 E AndroidRuntime FATAL EXCEPTION main Process com example catalyst PID 12531 java