2016-02-20 3 views
1

Пытается подключиться к базе данных MySQL в Android Studio 1.4.1. Разместил JAR-файл MySQL Connector в каталоге libs и добавил его как библиотеку, выполнив файлы компиляции ('libs/mysql.jar').Ошибка Android Studio preDexDebug при компиляции файла Jar MySQL Connector

Когда я пытаюсь запустить приложение, я получаю следующее сообщение об ошибке:

:app:preDexDebug 
UNEXPECTED TOP-LEVEL EXCEPTION: 
java.lang.RuntimeException: Exception parsing classes 
at com.android.dx.command.dexer.Main.processClass(Main.java:752) 
at com.android.dx.command.dexer.Main.processFileBytes(Main.java:718) 
at com.android.dx.command.dexer.Main.access$1200(Main.java:85) 
at com.android.dx.command.dexer.Main$FileBytesConsumer.processFileBytes(Main.java:1645) 
at com.android.dx.cf.direct.ClassPathOpener.processArchive(ClassPathOpener.java:284) 
at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:166) 
at com.android.dx.cf.direct.ClassPathOpener.process(ClassPathOpener.java:144) 
at com.android.dx.command.dexer.Main.processOne(Main.java:672) 
at com.android.dx.command.dexer.Main.processAllFiles(Main.java:574) 
at com.android.dx.command.dexer.Main.runMonoDex(Main.java:311) 
at com.android.dx.command.dexer.Main.run(Main.java:277) 
at com.android.dx.command.dexer.Main.main(Main.java:245) 
at com.android.dx.command.Main.main(Main.java:106) 

Caused by: com.android.dx.cf.iface.ParseException: bad class file magic (cafebabe) or version (0034.0000) 
at com.android.dx.cf.direct.DirectClassFile.parse0(DirectClassFile.java:472) 
at com.android.dx.cf.direct.DirectClassFile.parse(DirectClassFile.java:406) 
at com.android.dx.cf.direct.DirectClassFile.parseToInterfacesIfNecessary(DirectClassFile.java:388) 
at com.android.dx.cf.direct.DirectClassFile.getMagic(DirectClassFile.java:251) 
at com.android.dx.command.dexer.Main.parseClass(Main.java:764) 
at com.android.dx.command.dexer.Main.access$1500(Main.java:85) 
at com.android.dx.command.dexer.Main$ClassParserTask.call(Main.java:1684) 
at com.android.dx.command.dexer.Main.processClass(Main.java:749) 
... 12 more 
1 error; aborting 
Error:Execution failed for task ':app:preDexDebug'. 
> com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: 
    Process 'command 'C:\Program Files\Java\jdk1.8.0_74\bin\java.exe'' finished with non-zero exit value 1 

Вот мой build.gradle:

apply plugin: 'com.android.application' 

android { 
    compileSdkVersion 23 
    buildToolsVersion "23.0.2" 

    defaultConfig { 
     applicationId "com.example.breandan.dishfinder" 
     minSdkVersion 16 
     targetSdkVersion 23 
     versionCode 1 
     versionName "1.0" 
    } 
    buildTypes { 
     release { 
      minifyEnabled false 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
     } 
    } 
} 

dependencies { 
    testCompile 'junit:junit:4.12' 
    compile 'com.android.support:appcompat-v7:23.1.1' 
    compile 'com.android.support:design:23.1.1' 
    compile files('libs/mysql.jar') 
} 

Когда я удалить компилировать файлы ('ЛИЭС/mysql.jar ') строка, код работает, но он не выполняет никаких кодов моей базы данных.

ответ

1

Если вы хотите добавить MySQL JAR в свой проект, вы можете сделать это тремя стандартными способами. Если вы сделаете это стандартными способами, студия Android узнает их. Пожалуйста, прочитайте эту ссылку https://stackoverflow.com/a/35369267/5475941. В этой статье я объяснил, как импортировать файлы JAR в студию Android, и я объяснил все возможные пути шаг за шагом с помощью скриншотов.

Здесь вы можете найти файл JAR (вы должны иметь бесплатную учетную запись Oracle для загрузки):

https://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-5.1.38.tar.gz

Вы также можете найти его в локальном каталоге установки MySQL. Это адрес моей машины.

enter image description here

Затем добавьте его в Android студии:

import java.sql.Connection; 
import java.sql.DriverManager; 
import java.sql.ResultSet; 
import java.sql.ResultSetMetaData; 
import java.sql.Statement; 

Затем вы используете это так:

public class MysqlSample01Activity extends Activity { 

private static final String url = "jdbc:mysql://<server>:<port>/<database>"; 
private static final String user = "<your username>"; 
private static final String pass = "<your password>"; 

/** This will run when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    connectToDB(); 
} 

public void connectToDB() { 
    ... 
    try { 
     Class.forName("com.mysql.jdbc.Driver"); 
     Connection con = DriverManager.getConnection(url, user, pass); 
     System.out.println("Database connection was successful"); 

     Statement st = con.createStatement(); 
     ResultSet rs = st.executeQuery("select * from table_name"); 
     ResultSetMetaData rsmd = rs.getMetaData(); 

     while(rs.next()) { 
      result += rsmd.getColumnName(1) + ": " + rs.getInt(1) + "\n"; 
      result += rsmd.getColumnName(2) + ": " + rs.getString(2) + "\n"; 
     } 
     ... 
    } 
    catch(Exception e) { 
     e.printStackTrace(); 
     tv.setText(e.toString()); 
    } 

} 
} 
+0

Спасибо за помощь! По какой-то причине моя Android-студия не откроет окно «Структура проекта», когда я пытаюсь открыть его, есть ли способ вручную добавить зависимости, как вы делали во втором и третьем подходах? – Breandan

+0

Я понял это, но я все еще получаю ошибку с возвратом java.exe 1. Кажется, что когда я компилирую mysqlconnector.jar – Breandan

+0

, я обновил ответ, пожалуйста, взгляните на него. – Mohammad

Смежные вопросы