sqlite无法从jar:nullpointerexception classnotfoundexception:org.sqlite.jdbc内部连接到数据库

gg0vcinb  于 2021-06-30  发布在  Java
关注(0)|答案(1)|浏览(356)

我的连接代码:

  1. private Connection connect(String dbpath) {
  2. try {
  3. Connection conn;
  4. Class.forName("org.sqlite.JDBC");
  5. conn = DriverManager.getConnection("jdbc:sqlite:" +
  6. dbpath + ".db");
  7. System.out.println("Good!");
  8. return conn;
  9. } catch (Exception e) {
  10. System.out.println("Error!");
  11. return null;
  12. }
  13. }
  1. dbpath = /home/username/stuff.db

当我从idea intellij运行时,它运行正常,但是当我在jar中打包时它失败了。
编辑:
这是stacktrace下面的错误:

  1. ClassNotFoundException: org.sqlite.JDBC

vjhs03f7

vjhs03f71#

  1. } catch (Exception e) {
  2. System.out.println("Error!");
  3. return null;
  4. }

这是一个“医生,当我把锤子反复砸在脸上的时候疼”的问题。
别这样。
处理错误的正确方法是处理错误(记录错误,而不是处理错误)。下一个最好的方法是向前抛出异常(这里,添加 throws SQLException 你的方法签名。对于设计为连接到db的方法来说,这样做是完全明智的。如果你也做不到,正确的处理方法是 throw new RuntimeException("Uncaught", e); -因为你的方式会导致异常,不再提供你需要的信息。你把所有有趣的部分都扔了。很可能db path不在那里(您在另一个目录中),或者class.forname调用失败,因为您的依赖关系被破坏。
通常情况下,异常会确切地告诉您这两种情况中的哪一种是问题所在。
但是,因为你写了我上面展示的片段,现在你没有了。因此,证明这个片段是错误的。不过,解决办法很简单。不要再这样写代码了:)

相关问题