[英]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.