2014-10-24 10 views
10

Ok Abbiamo un'applicazione Java "app.jar" in una directory home unix con una libreria di driver Sqlite esterna.Non carica la libreria JDBC su ARM eseguendo Java Applikation

- myapp/app.jar 
- myapp/lib/sqlite-jdbc-3.8.7.jar 

Dispositivo Udoo ARM Cortex V9 simliar a Raspberry Pi.

java -version 
java version "1.8.0_06 
Java(TM) SE Runtime Environment (build 1.8.0_06-b23) 
Java HotSpot(TM) Client VM (build 25.6-b23, mixed mode) 

Provare a eseguire questa applicazione non riuscita.

java -classpath lib/sqlite-jdbc-3.8.7.jar -jar myapp.jar 

Sembra che l'Applicazione non riesca a trovare la Libreria.

java.lang.Exception: No native library is found for os.name=Linux and os.arch=arm 
at org.sqlite.SQLiteJDBCLoader.loadSQLiteNativeLibrary(SQLiteJDBCLoader.java:284) 
at org.sqlite.SQLiteJDBCLoader.initialize(SQLiteJDBCLoader.java:65) 

Non riesco a trovare una soluzione fino ad ora. È possibile copiare il file .jar nella cartella jdk/lib?

Edit:

Ora ho provato ad aggiungere la sqlite-jdbc-3.7.2.jar al JRE e funziona.

jdk1.8.0_06/jre/lib/ext 

La versione più recente sqlite-jdbc-3.8.7.jar non funziona.

+1

L'applicazione può trovare il driver, ma nel jar non esiste un driver nativo per la piattaforma arm –

+1

Come accennato, non esiste una libreria nativa di arm. Tuttavia, non c'è nessuno in 3.7.2, quindi non capisco come funzionasse. Hai avuto entrambe le versioni dallo stesso posto. È possibile che qualcuno abbia costruito la biblioteca di armi e l'abbia abbinata alla biblioteca? – vickirk

risposta

0

Ho confrontato il codice SQLiteJDBCLoader nella versione 3.8.7 con la versione 3.7.2 e ho trovato alcune informazioni. 3.7.2 sembra avere una pura modalità java mentre il codice corrispondente è da 3.8.7 mancante. Dalla mia piccola conoscenza e una rapida occhiata alla pagina di download, concludo che sarebbe necessaria una libreria nativa per la piattaforma di destinazione. Non sono riuscito a trovare un download per ARM.

Se è necessario un database di date java puro, è possibile che sia necessario un altro choice.

0

Credo che la vostra linea di comando sia sbagliata. Se si utilizza -jar, quindi -classpath viene ignorato!

O il manifest in app.jar deve fare riferimento alla libreria oppure è necessario avviarlo in questo modo: java -classpath lib/sqlite-jdbc-3.8.7.jar: myapp.jar name.of.MainClass