Library CouchbaseLiteJavaForestDB Not found in Raspibian Jessie

When I try to run my couchbase Java application in Raspberry PI it shows following error. How to install the missing library?
(App is running without error in MacOS Sierra )
Thank you.


Library not found: /native/linux/arm/libCouchbaseLiteJavaForestDB.so
Error loading library: CouchbaseLiteJavaForestDB
java.lang.NullPointerException
	at com.couchbase.lite.util.NativeLibUtils.loadLibrary(NativeLibUtils.java:45)
	at com.couchbase.lite.store.ForestDBStore.<clinit>(ForestDBStore.java:75)
	at java.lang.Class.forName0(Native Method)
	at java.lang.Class.forName(Class.java:264)
	at com.couchbase.lite.Database.createStoreInstance(Database.java:1156)
	at com.couchbase.lite.Database.open(Database.java:1221)
	at com.couchbase.lite.Manager.openDatabase(Manager.java:335)
	at com.couchbase.lite.Manager.getDatabase(Manager.java:299)
	at lk.gtech.couchbase.lite.CouchbaseLite.newDatabaseConnection(CouchbaseLite.java:56)
	at lk.gtech.couchbase.lite.CouchbaseLite.getDatabase(CouchbaseLite.java:48)
	at lk.gtech.pythia.rpi.ui.MainMenu.setupDB(MainMenu.java:98)
	at lk.gtech.pythia.rpi.ui.MainMenu.<init>(MainMenu.java:59)
	at lk.gtech.pythia.rpi.ProjectPythiaRPi$1.run(ProjectPythiaRPi.java:54)
	at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)
	at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:756)
	at java.awt.EventQueue.access$500(EventQueue.java:97)
	at java.awt.EventQueue$3.run(EventQueue.java:709)
	at java.awt.EventQueue$3.run(EventQueue.java:703)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:726)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
Jan 03, 2017 4:29:27 PM com.couchbase.lite.util.SystemLogger e
SEVERE: Database: ERROR: Failed to load CouchbaseLiteJavaForestDB
Library not found: /native/linux/arm/libsqlcipher.so
Jan 03, 2017 4:29:27 PM com.couchbase.lite.util.SystemLogger e
SEVERE: CBLite: Cannot find library: sqlcipher
Library not found: /native/linux/arm/libsqlite3.so
Jan 03, 2017 4:29:27 PM com.couchbase.lite.util.SystemLogger e
SEVERE: CBLite: Cannot find library: sqlite3
Jan 03, 2017 4:29:27 PM com.couchbase.lite.util.SystemLogger e
SEVERE: Database: Cannot load native library
Library not found: /native/linux/arm/libsqlcipher.so
Jan 03, 2017 4:29:27 PM com.couchbase.lite.util.SystemLogger e
SEVERE: CBLite: Cannot find library: sqlcipher
Library not found: /native/linux/arm/libsqlite3.so
Jan 03, 2017 4:29:27 PM com.couchbase.lite.util.SystemLogger e
SEVERE: CBLite: Cannot find library: sqlite3
Jan 03, 2017 4:29:27 PM com.couchbase.lite.util.SystemLogger e
SEVERE: Database: Cannot load native library
Exception in thread "AWT-EventQueue-0" java.lang.UnsatisfiedLinkError: com.couchbase.lite.internal.database.sqlite.SQLiteConnection.nativeOpen(Ljava/lang/String;ILjava/lang/String;ZZ)J
	at com.couchbase.lite.internal.database.sqlite.SQLiteConnection.nativeOpen(Native Method)
	at com.couchbase.lite.internal.database.sqlite.SQLiteConnection.open(SQLiteConnection.java:194)
	at com.couchbase.lite.internal.database.sqlite.SQLiteConnection.open(SQLiteConnection.java:178)
	at com.couchbase.lite.internal.database.sqlite.SQLiteConnectionPool.openConnectionLocked(SQLiteConnectionPool.java:461)
	at com.couchbase.lite.internal.database.sqlite.SQLiteConnectionPool.open(SQLiteConnectionPool.java:191)
	at com.couchbase.lite.internal.database.sqlite.SQLiteConnectionPool.open(SQLiteConnectionPool.java:183)
	at com.couchbase.lite.internal.database.sqlite.SQLiteDatabase.openInner(SQLiteDatabase.java:820)
	at com.couchbase.lite.internal.database.sqlite.SQLiteDatabase.open(SQLiteDatabase.java:803)
	at com.couchbase.lite.internal.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:698)
	at com.couchbase.lite.storage.SQLiteStorageEngineBase.open(SQLiteStorageEngineBase.java:70)
	at com.couchbase.lite.store.SQLiteStore.open(SQLiteStore.java:188)
	at com.couchbase.lite.Database.open(Database.java:1251)
	at com.couchbase.lite.Manager.openDatabase(Manager.java:335)
	at com.couchbase.lite.Manager.getDatabase(Manager.java:299)
	at lk.gtech.couchbase.lite.CouchbaseLite.newDatabaseConnection(CouchbaseLite.java:56)
	at lk.gtech.couchbase.lite.CouchbaseLite.getDatabase(CouchbaseLite.java:48)
	at lk.gtech.pythia.rpi.ui.MainMenu.setupDB(MainMenu.java:98)
	at lk.gtech.pythia.rpi.ui.MainMenu.<init>(MainMenu.java:59)
	at lk.gtech.pythia.rpi.ProjectPythiaRPi$1.run(ProjectPythiaRPi.java:54)
	at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)
	at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:756)
	at java.awt.EventQueue.access$500(EventQueue.java:97)
	at java.awt.EventQueue$3.run(EventQueue.java:709)
	at java.awt.EventQueue$3.run(EventQueue.java:703)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:726)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)

I have edited my code to set storage engine to SQLite as following. Yet still the error is there.

        cbl.manager = new Manager(context, Manager.DEFAULT_OPTIONS);
        DatabaseOptions options = new DatabaseOptions();
        options.setCreate(true);
        options.setStorageType(Manager.SQLITE_STORAGE);
        cbl.database = manager.openDatabase("default", options);

Raspberry pi is not an officially supported platform. It is missing needed native libraries for the arm platform. You will need to compile them yourself (I wrote a blog post about it last summer)

@borrrden do you have complied native libraries. I’m new to native compilation. Will go through you blog too.

As @borrrden said, “Raspberry pi is not an officially supported platform”, and “You will need to compile them yourself”. That should answer your question.

Add github issue for future references to other members

@borrrden I have used your raspi branch changes. When I run gradlew pSpec=cross inside sqlite-custom folder Build success but there this no build folder inside the sqlite-custom.

The correct command is ` gradlew -Pspec=java build

The command gradlew -Pspec=java build gives error and failed.But gradlew -Pspec=cross build got succeeded

As gradle file name for raspberry pi is build-cross.gradle, so gradlew -Pspec=cross build is correct parameter.