Java項目使用SQLite資料庫後無法啟動的問題

來源:互聯網
上載者:User

標籤:drive   str   nat   nec   l資料庫   cut   資訊   beat   c3p0   

背景:

  Java > maven 的 jar 項目

  功能是記錄使用者的每天的按鍵次數

  使用 jar2exe 工具將 jar 轉為 exe 可執行檔

  原本項目中使用的Mysql資料庫,使用Mybatis工具操作運行沒有問題

  後來發現對於一個小工具來說,用Mysql太麻煩,因為需要安裝配置Mysql等等.

  於是我上網查了查,找到了一個輕量級的嵌入式資料庫SQLite

  匯入一個 org.xerial > sqlite-jdbc jar 包,直接就可以建立資料庫檔案了十分方便

  當時用的 jar 是最新的版本 3.20.0

  費了一天的勁,將之前的持久層代碼從Mysql替換成了SQLite

 

問題介紹:

  在編輯器內運行良好

  編譯成 jar 後,使用 java -jar ***.jar 運行良好

  當我把 jar 用 jar2exe 轉成 exe 運行檔案後, 它就報錯了

  錯誤資訊如下:

java.sql.SQLException: Error opening connectionat org.sqlite.core.CoreConnection.open(CoreConnection.java:215)at org.sqlite.core.CoreConnection.<init>(CoreConnection.java:76)at org.sqlite.jdbc3.JDBC3Connection.<init>(JDBC3Connection.java:26)at org.sqlite.jdbc4.JDBC4Connection.<init>(JDBC4Connection.java:24)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 com.mchange.v2.c3p0.DriverManagerDataSource.getConnection(DriverManagerDataSource.java:119)at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:143)at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:132)at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPoolManager.initializeAutomaticTestTable(C3P0PooledConnectionPoolManager.java:772)at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPoolManager.createPooledConnectionPool(C3P0PooledConnectionPoolManager.java:696)at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPoolManager.getPool(C3P0PooledConnectionPoolManager.java:257)at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPoolManager.getPool(C3P0PooledConnectionPoolManager.java:271)at com.mchange.v2.c3p0.impl.AbstractPoolBackedDataSource.getConnection(AbstractPoolBackedDataSource.java:128)at com.play.util.SQLiteUtil.openConnection(SQLiteUtil.java:56)at com.play.base.BaseDaoImpl.execute(BaseDaoImpl.java:54)at com.play.dao.impl.KeyRecordDayDaoImpl.add(KeyRecordDayDaoImpl.java:22)at com.play.DataManager.addToDayRecord(DataManager.java:75)at com.play.DataManager.addBeat(DataManager.java:58)at com.play.DataManager.lambda$new$0(DataManager.java:32)at java.lang.Thread.run(Thread.java:748)Caused by: java.lang.NullPointerExceptionat org.sqlite.SQLiteJDBCLoader.loadSQLiteNativeLibrary(SQLiteJDBCLoader.java:315)at org.sqlite.SQLiteJDBCLoader.initialize(SQLiteJDBCLoader.java:64)at org.sqlite.core.NativeDB.load(NativeDB.java:56)at org.sqlite.core.CoreConnection.open(CoreConnection.java:211)... 21 more

  很傷腦筋,上網查了半天沒有查到相關問題

  最終FQ到Google上搜尋了一番

  找到了一個類似的問題,全是英文,具體沒看太懂

  但是裡面提到了 sqlite-jdbc jar 版本的問題.

  於是我抱著試試看的心態

  將版本改成了 3.8.11.2

  編譯完成 > 轉 exe 完成 > 運行成功> 問題解決!

Java項目使用SQLite資料庫後無法啟動的問題

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.