MySql-java.Lang.ClassNotFoundException:com.MySql.jdbc.Driver(React Native,Android)

MySql-java.Lang.ClassNotFoundException:com.MySql.jdbc.Driver(React Native,Android),android,mysql,android-studio,react-native,jdbc,Android,Mysql,Android Studio,React Native,Jdbc,我正在为React本机应用程序开发本机模块。在模块中,我尝试建立一个JDBC连接。我还使用androidstudio加载了mysql-connector-java-8.0.11连接器,但出现了上述错误 我已经使用android studio将jar文件添加为一个模块 以下是我的代码: package com.myproject.helloworld; import android.widget.Toast; import com.facebook.react.bridge.NativeMo

我正在为React本机应用程序开发本机模块。在模块中,我尝试建立一个JDBC连接。我还使用androidstudio加载了mysql-connector-java-8.0.11连接器,但出现了上述错误

我已经使用android studio将jar文件添加为一个模块

以下是我的代码:

package com.myproject.helloworld;

import android.widget.Toast;


import com.facebook.react.bridge.NativeModule;
import com.facebook.react.bridge.ReactApplicationContext;
import com.facebook.react.bridge.ReactContext;
import com.facebook.react.bridge.ReactContextBaseJavaModule;
import com.facebook.react.bridge.ReactMethod;
import com.facebook.react.bridge.Callback;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.Map;
import java.util.HashMap;

import javax.sql.DataSource;

public class MyModule extends ReactContextBaseJavaModule {

  private static final String DURATION_SHORT_KEY = "SHORT";
  private static final String DURATION_LONG_KEY = "LONG";

  public MyModule(ReactApplicationContext reactContext) {
    super(reactContext);
  }

  @Override
  public String getName() {
    return "MyModule";
  }

  @Override
  public Map<String, Object> getConstants() {
    final Map<String, Object> constants = new HashMap<>();
    constants.put(DURATION_SHORT_KEY, Toast.LENGTH_SHORT);
    constants.put(DURATION_LONG_KEY, Toast.LENGTH_LONG);
    return constants;
  }

  @ReactMethod
  public void show(String message, int duration, Callback successCallback) {
      Toast.makeText(getReactApplicationContext(), message, duration).show();


      String str = null;

      try{
          Class.forName("com.mysql.jdbc.Driver").newInstance();
          Connection con= DriverManager.getConnection(
          "jdbc:mysql://localhost:3306/dgcis","root","root");

          Statement stmt=con.createStatement();
          ResultSet rs=stmt.executeQuery("select COUNTRY_NAME from exp_imp_brc limit 1;");
          while(rs.next())
          str = rs.getString(1);

          System.out.print(str);

          con.close();


      }catch(Exception e){ str = e.toString();}

      successCallback.invoke("santosh", str );

      }

}

找不到模块是您的类路径。也可能是,虽然项目知道该文件,但构建脚本的作用域中可能没有jar文件

将此添加到gradle依赖项中

// https://mvnrepository.com/artifact/mysql/mysql-connector-java
compile group: 'mysql', name: 'mysql-connector-java', version: '5.1.5'

编辑:将mysql连接器版本更新为5.1.5,因此它与1.7编译代码兼容

我在gradle依赖项“compile group:'mysql',name:'mysql connector java',version:'8.0.11'”中添加了这一行,但是我得到了一个错误'Dex:error将字节码转换为Dex:WithDexForDebug原因:Dex无法解析版本52字节码。这是由使用Java8或更高版本编译的库依赖项引起的。如果在库子模块中使用“java”gradle插件,请将targetCompatibility='1.7'sourceCompatibility='1.7'添加到该子模块的build.gradle文件中。意外的顶级异常:java.lang.RuntimeException:EXCEPTION parsing classes'您也可以发布您的gradle文件吗?我已将其添加到问题中,并使用答案中更新的5.1.5进行尝试,因为它是用1.7编译的,不会抛出异常。如果是这样,我应该再次导入连接器,对吗?你不应该像这样从android设备连接到MySQL数据库。它是不安全的,而且可能性能很差。使用RESTAPI作为中介。
// https://mvnrepository.com/artifact/mysql/mysql-connector-java
compile group: 'mysql', name: 'mysql-connector-java', version: '5.1.5'