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

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

我的连接代码:

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

vjhs03f7

vjhs03f71#

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

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

相关问题