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