2015-01-28 3 views
4

자바에서 sqlite 데이터베이스의 작은 코드를 만들었습니다.라즈베리 파이에 자바와 함께 sqlite 사용

다음에서는, 두번째 줄의 getConnection 대한 예외 1()이 코드

Class.forName("org.sqlite.JDBC"); 

objConnection=DriverManager.getConnection("jdbc:sqlite:/etc/javaData/Test.db"); 

데이터베이스와의 연결을위한 코드이다. 나는 라스베리 파이에이 코드를 시도하고있다. 이

예외

SQLITE addDeviceInfo()-[SQLITE] SQL Exception occured. RetryCount:1 (MAX Retry: 2) ErrorCode: 27154 Exception Message: Error opening connection Stack Trace: java.sql.SQLException: Error opening connection 
    at org.sqlite.core.CoreConnection.open(CoreConnection.java:140) 
    at org.sqlite.core.CoreConnection.<init>(CoreConnection.java:66) 
    at org.sqlite.jdbc3.JDBC3Connection.<init>(JDBC3Connection.java:21) 
    at org.sqlite.jdbc4.JDBC4Connection.<init>(JDBC4Connection.java:23) 
    at org.sqlite.SQLiteConnection.<init>(SQLiteConnection.java:45) 
    at org.sqlite.JDBC.createConnection(JDBC.java:114) 
    at org.sqlite.JDBC.connect(JDBC.java:88) 
    at java.sql.DriverManager.getConnection(DriverManager.java:571) 
    at java.sql.DriverManager.getConnection(DriverManager.java:215) 
    at kmbt.DCA.SQLite.DCASQLiteUtility.getSQliteConnection(DCASQLiteUtility.java:152) 
    at kmbt.DCA.SQLite.ManagedDeviceSetting.SQLite_ManagedDeviceSettingManager.addDeviceInfo(SQLite_ManagedDeviceSettingManager.java:981) 
    at kmbt.DCA.DCAChildProcessMng.InitManagedDeviceInfo(DCAChildProcessMng.java:5726) 
    at kmbt.DCA.DCAChildProcessMng.InitSQLite(DCAChildProcessMng.java:4387) 
    at kmbt.DCA.DCAChildProcessMng.start(DCAChildProcessMng.java:365) 
    at kmbt.DCA.DCAChildProcess.main(DCAChildProcess.java:23) 
Caused by: java.lang.Exception: Error loading native library: /org/sqlite/native/Linux/arm/libsqlitejdbc.so 
    at org.sqlite.SQLiteJDBCLoader.loadSQLiteNativeLibrary(SQLiteJDBCLoader.java:243) at org.sqlite.SQLiteJDBCLoader.initialize(SQLiteJDBCLoader.java:65) 
    at org.sqlite.core.NativeDB.load(NativeDB.java:53) 
    at org.sqlite.core.CoreConnection.open(CoreConnection.java:136) 
    ... 14 more 
+0

으로 해결할 수 있습니까? – kidmose

답변

1

에 exceptionrelated를 해결하는 방법 코드는 올바른 보인다 던져 예외는 일부 라이브러리의 문제와는 아무 상관없는 것 같다. 조금 이상하게 들리는 것은 데이터베이스를/etc 폴더에 넣는 것뿐입니다. 우선/etc 폴더가 설정 파일을 저장하고 데이터가 저장되지 않기 때문에 매우 정확하지 않습니다. 이 외에도 r/w 폴더의 사용 권한과 관련된 문제가있을 수 있습니다. 데이터베이스를 홈 디렉토리 또는 루트가 아닌 사용자 소유의 다른 디렉토리로 이동하십시오.

희망이 도움이 될 것입니다.

- 편집 -

좋아, 문제는 잘못된 라이브러리를 다운로드 한 것입니다 :

Error loading native library: /org/sqlite/native/Linux/arm/libsqlitejdbc.so 

당신은 sqlite가 라이브러리의 ARM 빌드를 사용해야합니다. 이것 살펴보십시오 : Error opening connection SQLite on Raspberry pi 이를 : Sqlite4java on Raspberry Pi

+0

데이터베이스가 다른 디렉토리로 이동되었습니다. 이제 동일한 예외가 표시됩니다. – Amol

+0

질문에 전체 스택 추적을 추가 할 수 있습니까? – wyr0

+0

이것은 전체 스택 추적이 아니며 일부는이 부분을 건너 뜁니다. – Amol

1

가 나는 또한 sqlite-jdbc-3.8.6.jar으로 찾고

java.lang.Exception: Error loading native library: /org/sqlite/native/Linux/arm/libsqlitejdbc.so에 직면 나는 /org/sqlite/native/Linux/arm 폴더를 포함하지 않는 것을 발견 -> SQLite는 팔 컴파일되지 않습니다.

내가 파이 구축 관리했습니다 이러한 변화와

: 새로 내장 된 하나 오래된 항아리를 교체 https://bitbucket.org/kidmose/sqlite-jdbc/commits/cb7a7ef62c034938e8ecb737b148e5c80877c083

[email protected] ~/sqlite-jdbc $ export JAVA_HOME=/usr/lib/jvm/jdk-7-oracle-armhf/ 
[email protected] ~/sqlite-jdbc $ chmod 755 ./amalgamation_version.sh 
[email protected] ~/sqlite-jdbc $ make 

내 문제를 해결했다.

신용은 모두 https://pidome.wordpress.com/2013/10/01/java-goes-hard-on-the-raspberry-pi-so-does-pidome/

관련 문제