java.lang.UnsatisfiedLinkError: dbopen
Ich bin versucht, zu schreiben, ein Android-test-Fall auf einem block von code in der android-Anwendung.der code-block wird die Interaktion mit der Datenbank (sqlcipher library-Funktionen), die speziell dbopen () - Funktion. Wenn Sie die Anwendung ausführen, es ist in Ordnung. Als wir versuchten, um den test auszuführen Fall für die code-block(beinhaltet die Datenbank-Interaktion). Es gibt folgenden Fehler: java.lang.UnsatisfiedLinkError: dbopen
Könnte sich ein Blick in diesen und schlagen.
Nicht ein test-Fall hat die Behörde zu nennen, eine Funktion, die den Aufruf sqlcipher library-Funktionen.
Alle erforderlichen Berechtigungen, oder ein bestimmtes Verfahren gibt es für diese Art von test-Fällen ?
vollständige Fehlerprotokoll:
04-30 12:08:33.997: I/TestRunner(2169): started: teststateMachine(com.americanlogistics.mdd.rhapsody.view.test.SigninViewsateMachineTest)
04-30 12:08:34.147: W/dalvikvm(2169): No implementation found for native Linfo/guardianproject/database/sqlcipher/SQLiteDatabase;.dbopen (Ljava/lang/String;I)V
04-30 12:08:34.164: I/TestRunner(2169): failed: teststateMachine(com.americanlogistics.mdd.rhapsody.view.test.SigninViewsateMachineTest)
04-30 12:08:34.164: I/TestRunner(2169): ----- begin exception -----
04-30 12:08:34.184: I/TestRunner(2169): java.lang.UnsatisfiedLinkError: dbopen
04-30 12:08:34.184: I/TestRunner(2169): at info.guardianproject.database.sqlcipher.SQLiteDatabase.dbopen(Native Method)
04-30 12:08:34.184: I/TestRunner(2169): at info.guardianproject.database.sqlcipher.SQLiteDatabase.<init>(SQLiteDatabase.java:1870)
04-30 12:08:34.184: I/TestRunner(2169): at info.guardianproject.database.sqlcipher.SQLiteDatabase.openDatabase(SQLiteDatabase.java:863)
04-30 12:08:34.184: I/TestRunner(2169): at info.guardianproject.database.sqlcipher.SQLiteDatabase.openOrCreateDatabase(SQLiteDatabase.java:897)
04-30 12:08:34.184: I/TestRunner(2169): at info.guardianproject.database.sqlcipher.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:107)
04-30 12:08:34.184: I/TestRunner(2169): at com.americanlogistics.mdd.rhapsody.database.SendQueueDBAdapter.open(SendQueueDBAdapter.java:45)
04-30 12:08:34.184: I/TestRunner(2169): at com.americanlogistics.mdd.rhapsody.database.SendQueueDBAdapter.databaseHelperInstance(SendQueueDBAdapter.java:38)
04-30 12:08:34.184: I/TestRunner(2169): at com.americanlogistics.mdd.rhapsody.common.ApplicationController.startDatabase(ApplicationController.java:530)
04-30 12:08:34.184: I/TestRunner(2169): at com.americanlogistics.mdd.rhapsody.view.test.SigninViewsateMachineTest.teststateMachine(SigninViewsateMachineTest.java:61)
04-30 12:08:34.184: I/TestRunner(2169): at java.lang.reflect.Method.invokeNative(Native Method)
04-30 12:08:34.184: I/TestRunner(2169): at java.lang.reflect.Method.invoke(Method.java:507)
04-30 12:08:34.184: I/TestRunner(2169): at junit.framework.TestCase.runTest(TestCase.java:154)
04-30 12:08:34.184: I/TestRunner(2169): at junit.framework.TestCase.runBare(TestCase.java:127)
04-30 12:08:34.184: I/TestRunner(2169): at junit.framework.TestResult$1.protect(TestResult.java:106)
04-30 12:08:34.184: I/TestRunner(2169): at junit.framework.TestResult.runProtected(TestResult.java:124)
04-30 12:08:34.184: I/TestRunner(2169): at junit.framework.TestResult.run(TestResult.java:109)
04-30 12:08:34.184: I/TestRunner(2169): at junit.framework.TestCase.run(TestCase.java:118)
04-30 12:08:34.184: I/TestRunner(2169): at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:169)
04-30 12:08:34.184: I/TestRunner(2169): at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:154)
04-30 12:08:34.184: I/TestRunner(2169): at android.test.InstrumentationTestRunner.onStart(InstrumentationTestRunner.java:529)
04-30 12:08:34.184: I/TestRunner(2169): at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1448)
04-30 12:08:34.184: I/TestRunner(2169): ----- end exception -----
Code:
Die folgende Zeile in die test-case indirekt aufrufen sqlcipher library-Funktion.
ApplicationController.getInstance().startDatabase(dies.getContext().getApplicationContext());
- möglicherweise werden Sie versuchen, Sie zu bekommen, lesbar/beschreibbar ist bereits lesbare/schreibbare Kopie der db.
- Hast du eine Lösung gefunden? Sie habe die unten als Antwort "das problem löst", aber es nicht wirklich sagen, was zu tun ist.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Scheint es, dass Sie code ist inkompatibel mit der version, die Sie ausführen. Stellen Sie sicher, dass Sie kompatibel sind.
Traf ich den gleichen Fehler, während intergrating SQLCipher für Android. Die Lösung für mich war die call
bevor die Arbeit mit der Datenbank selbst, als empfohlen. Ein guter Ort, um zu nennen, das in der Anwendung der abgeleiteten Klasse.
Bitte sehen Sie die Handlungsanweisung hier
http://www.coderanch.com/t/79145/Websphere/Native-lib-already-loaded-another
Diese "unsatisfy link" Fehlermeldung kann auftreten, aufgrund der Tatsache, dass eine Klasse geladen wurde, aber von den falschen classloader in der Hierarchie von runtime-classloadern.
Wilde Vermutung ist, dass die Sqllite-Paket ist dort und in den Classpath ,aber in dem Szenario mit der Ausführung Ihrer tests, die falsche loader-Instanz geladen hat der DB-Pakete.