我该如何解决'java.lang.NoClassDefFoundError:无法解决以下问题:Ljava / sql / SQLType;'

时间:2020-08-23 16:16:29

标签: java android mysql sql android-studio

你好,我想将我的android应用程序连接到我的sql-server。 我已经在build.grandle中添加了SQLConnector。

dependencies {
   implementation 'mysql:mysql-connector-java:8.0.21'
}

我还添加了:

compileOptions {
    targetCompatibility JavaVersion.VERSION_1_8
    sourceCompatibility JavaVersion.VERSION_1_8
}

转到android{}部分。

我的班级看起来像这样:

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_view);

        new AsyncTask<Void, Void, Void>(){

            @Override
            protected Void doInBackground(Void... voids) {
                try {
                    Connection connection = DriverManager.getConnection("jdbc:mysql://ip_to_my_sql_server:3306", "xyuser", "xypasswd");
                    connection.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
                return null;
            }
        }.execute();
    }
}

但是当我在手机上尝试此代码时,在控制台中出现以下错误:

E/AndroidRuntime: FATAL EXCEPTION: AsyncTask #1
Process: de.programmer857.passwordsaver, PID: 25167
java.lang.RuntimeException: An error occurred while executing doInBackground()
    at android.os.AsyncTask$4.done(AsyncTask.java:399)
    at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:383)
    at java.util.concurrent.FutureTask.setException(FutureTask.java:252)
    at java.util.concurrent.FutureTask.run(FutureTask.java:271)
    at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:289)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
    at java.lang.Thread.run(Thread.java:919)
 Caused by: java.lang.NoClassDefFoundError: Failed resolution of: Ljava/sql/SQLType;
    at com.mysql.cj.jdbc.DatabaseMetaData.getInstance(DatabaseMetaData.java:746)
    at com.mysql.cj.jdbc.ConnectionImpl.getMetaData(ConnectionImpl.java:1170)
    at com.mysql.cj.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:447)
    at com.mysql.cj.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:246)
    at com.mysql.cj.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:197)
    at java.sql.DriverManager.getConnection(DriverManager.java:580)
    at java.sql.DriverManager.getConnection(DriverManager.java:218)
    at de.programmer857.passwordsaver.ui.ViewActivity$1.doInBackground(ViewActivity.java:32)
    at de.programmer857.passwordsaver.ui.ViewActivity$1.doInBackground(ViewActivity.java:27)
    at android.os.AsyncTask$3.call(AsyncTask.java:378)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:289) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641) 
    at java.lang.Thread.run(Thread.java:919) 
 Caused by: java.lang.ClassNotFoundException: Didn't find class "java.sql.SQLType" on path: DexPathList[[zip file "/data/app/de.programmer857.pack-B4ctYkqYQxgmcEk7yCGX_Q==/base.apk"],nativeLibraryDirectories=[/data/app/de.programmer857.pack-B4ctYkqYQxgmcEk7yCGX_Q==/lib/arm64, /system/lib64, /system/product/lib64]]
    at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:196)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:379)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
    at com.mysql.cj.jdbc.DatabaseMetaData.getInstance(DatabaseMetaData.java:746) 
    at com.mysql.cj.jdbc.ConnectionImpl.getMetaData(ConnectionImpl.java:1170) 
    at com.mysql.cj.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:447) 
    at com.mysql.cj.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:246) 
    at com.mysql.cj.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:197) 
    at java.sql.DriverManager.getConnection(DriverManager.java:580) 
    at java.sql.DriverManager.getConnection(DriverManager.java:218) 
    at de.programmer857.pack.ui.MainActivity$1.doInBackground(MainActivity.java:32) 
    at de.programmer857.pack.ui.MainActivity$1.doInBackground(MainActivity.java:27) 
    at android.os.AsyncTask$3.call(AsyncTask.java:378) 
    at java.util.concurrent.FutureTask.run(FutureTask.java:266) 
    at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:289) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641) 
    at java.lang.Thread.run(Thread.java:919) 
I/Process: Sending signal. PID: 25167 SIG: 9

有人知道如何解决此错误吗? 谢谢。 :)

0 个答案:

没有答案