[英]Sqlite can't connect to database from inside jar: NullPointerException ClassNotFoundException: org.sqlite.JDBC
我的連接代碼:
private Connection connect(String dbpath) {
try {
Connection conn;
Class.forName("org.sqlite.JDBC");
conn = DriverManager.getConnection("jdbc:sqlite:" +
dbpath + ".db");
System.out.println("Good!");
return conn;
} catch (Exception e) {
System.out.println("Error!");
return null;
}
}
dbpath = /home/username/stuff.db
當我從 Idea Intellij 運行時它運行正常,但是當我在 jar 中運行 package 時它失敗了。
編輯:
這是堆棧跟蹤中更多的錯誤:
ClassNotFoundException: org.sqlite.JDBC
} catch (Exception e) { System.out.println("Error;"); return null; }
這是一個“醫生,當我反復用這把錘子砸我的臉時很痛”的問題。
別那樣做。
處理錯誤的正確方法是處理它(記錄它,而不是處理它)。 下一個最好的方法是繼續拋出異常(在這里,將throws SQLException
添加到您的方法簽名中。對於旨在連接到數據庫的方法來說,這樣做是完全明智的)。 如果你也不能這樣做,正確的處理程序是throw new RuntimeException("Uncaught", e);
- 因為你的方式,好吧,導致不再提供你需要的信息的例外。 你扔掉了所有有趣的部分。 很可能該 db 路徑不存在(您位於不同的目錄中),或者 CLass.forName 調用失敗,因為您的依賴關系已損壞。
通常,異常會准確地告訴您這兩種情況中的哪一種是問題所在。
但是,因為你寫了我上面展示的片段,現在你沒有。 因此,證明該片段是不好的。 不過,解決方案很簡單。 不要再寫那樣的代碼了:)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.