Bonjour,
J'essaye de connecter mon application android avec ma base de données ms access pour se faire je souhaite utiliser le driver ucanaccess. Je code sous android studio avec gradle pour build.
J'ai initialisé les dependencies pour les fichiers .jar ucanaccess et hsqldb télécharger depuis https://mvnrepository.com/artifact/n...anaccess/5.0.1
Malheureusement lorsque je compile je me retrouve avec l'erreur suivante
java.lang.NoClassDefFoundError: Failed resolution of: Ljava/sql/DriverAction;
cell-ci semble provenir à la suite de
Class.forName("org.hsqldb.jdbc.JDBCDriver");
Voici mon main:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97
|
package fr.Emka.Banc_test;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends AppCompatActivity {
private static final String TAG = "ENR";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Spinner _Client_ref = (Spinner) findViewById(R.id.client_ref); /*déclaration spinner pour client_ref*/
Spinner _Ref = (Spinner) findViewById(R.id.ref_vente);
Spinner Client_banc = (Spinner) findViewById(R.id.client_banc);
Spinner Banc = (Spinner) findViewById(R.id.banc);
List<String> listSpinClientRef = new ArrayList<String>();
List<String> listSpinRef = new ArrayList<String>();
List<String> listSpinClientBanc = new ArrayList<String>();
List<String> listSpinBanc = new ArrayList<String>();
listSpinRef.add("Sélectionner une Référence");
listSpinClientRef.add("Sélectionner un Client");
listSpinClientBanc.add("Sélectionner un Client");
listSpinBanc.add("Sélectionner un Banc");
try {
Class.forName("org.hsqldb.jdbc.JDBCDriver");
} catch (ClassNotFoundException e) {
e.printStackTrace();
System.out.println("class hsqldb fail");
}
try {
Class.forName("net.ucanaccess.jdbc.UcanaccessDriver");
}
catch (ClassNotFoundException e1) {
e1.printStackTrace();
System.out.println("class ucanaccess fail");
}
//connection to access database
try {
Connection base = DriverManager.getConnection("jdbc:ucanaccess://C:/Users/lcor/AndroidStudioProjects/Banc_test/Banc_test.accdb");
System.out.println("Connected to MS Access database");
Log.d(TAG,"Connected to MS Access database");
//query select records
String SQL = "SELECT DISTINCT Client FROM Liste_bancs";
ResultSet result = base.createStatement().executeQuery(SQL);
//loop implement record in spinner
while (result.next())
{
String client = result.getString("Liste_bancs");
listSpinClientRef.add(client);
}
base.close();
}
catch (SQLException e) {
e.printStackTrace();
System.out.println("connection fail");
}
listSpinClientRef.add("emka");
ArrayAdapter<String> spin_Client_ref = new ArrayAdapter<String>(MainActivity.this, android.R.layout.simple_spinner_item,listSpinClientRef);
spin_Client_ref.setDropDownViewResource(android.R.layout.simple_spinner_item);
_Client_ref.setAdapter(spin_Client_ref);
ArrayAdapter<String> spin_ref = new ArrayAdapter<String>(MainActivity.this, android.R.layout.simple_spinner_item,listSpinRef);
spin_ref.setDropDownViewResource(android.R.layout.simple_spinner_item);
_Ref.setAdapter(spin_ref);
ArrayAdapter<String> spin_Client_banc = new ArrayAdapter<String>(MainActivity.this, android.R.layout.simple_spinner_item,listSpinClientBanc);
spin_Client_banc.setDropDownViewResource(android.R.layout.simple_spinner_item);
Client_banc.setAdapter(spin_Client_banc);
ArrayAdapter<String> spin_Banc = new ArrayAdapter<String>(MainActivity.this, android.R.layout.simple_spinner_item,listSpinBanc);
spin_Banc.setDropDownViewResource(android.R.layout.simple_spinner_item);
Banc.setAdapter(spin_Banc);
}
} |
Les errreures du run:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
|
D/AndroidRuntime: Shutting down VM
E/AndroidRuntime: FATAL EXCEPTION: main
Process: fr.Emka.Banc_test, PID: 7606
java.lang.NoClassDefFoundError: Failed resolution of: Ljava/sql/DriverAction;
at java.lang.Class.classForName(Native Method)
at java.lang.Class.forName(Class.java:454)
at java.lang.Class.forName(Class.java:379)
at fr.Emka.Banc_test.MainActivity.onCreate(MainActivity.java:41)
at android.app.Activity.performCreate(Activity.java:8000)
at android.app.Activity.performCreate(Activity.java:7984)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1309)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3422)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3601)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:85)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2066)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:223)
at android.app.ActivityThread.main(ActivityThread.java:7656)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)
Caused by: java.lang.ClassNotFoundException: Didn't find class "java.sql.DriverAction" on path: DexPathList[[dex file "/data/data/fr.Emka.Banc_test/code_cache/.overlay/base.apk/classes.dex", zip file "/data/app/~~LjF_TspCLlUAUpP6Ut8Mhg==/fr.Emka.Banc_test-_7ZtNzhTuBpJtSB_Ewbvng==/base.apk"],nativeLibraryDirectories=[/data/app/~~LjF_TspCLlUAUpP6Ut8Mhg==/fr.Emka.Banc_test-_7ZtNzhTuBpJtSB_Ewbvng==/lib/x86, /system/lib, /system_ext/lib]]
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:207)
at java.lang.ClassLoader.loadClass(ClassLoader.java:379)
at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
at java.lang.Class.classForName(Native Method)*
at java.lang.Class.forName(Class.java:454)*
at java.lang.Class.forName(Class.java:379)*
at fr.Emka.Banc_test.MainActivity.onCreate(MainActivity.java:41)*
at android.app.Activity.performCreate(Activity.java:8000)*
at android.app.Activity.performCreate(Activity.java:7984)*
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1309)*
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3422)*
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3601)*
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:85)*
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)*
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)*
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2066)*
at android.os.Handler.dispatchMessage(Handler.java:106)*
at android.os.Looper.loop(Looper.java:223)*
at android.app.ActivityThread.main(ActivityThread.java:7656)*
at java.lang.reflect.Method.invoke(Native Method)*
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)*
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)*
I/Process: Sending signal. PID: 7606 SIG: 9 |
et mon build.gradle
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
|
plugins {
id 'com.android.application'
}
android {
compileSdkVersion 30
buildToolsVersion "30.0.3"
defaultConfig {
applicationId "fr.Emka.Banc_test"
minSdkVersion 16
targetSdkVersion 30
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
dependencies {
//noinspection GradleCompatible
implementation 'com.android.support:appcompat-v7:28.0.0'
implementation 'com.android.support.constraint:constraint-layout:2.0.1'
implementation group: 'net.sf.ucanaccess', name: 'ucanaccess', version: '5.0.1'
testImplementation group: 'org.hsqldb', name: 'hsqldb', version: '2.5.0'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
} |
Partager