1

我正在尝试从 Java 连接到 sqlite 数据库。我在 Windows 中编程。我下载了 sqlite 驱动程序并在 windows 环境变量中设置了类路径。调用此代码时,我得到一个 classNotFoundException:

   Class.forName(sDriver);  

其中 sDriver 是“org.sqlite.JDBC” 这是异常的堆栈跟踪:

java.lang.ClassNotFoundException: org.sqlite.JDBC
at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:186)
at com.ib.client.examples.Mydb.setConnection(Mydb.java:49)
at com.ib.client.examples.Mydb.init(Mydb.java:33)
at com.ib.client.examples.Mydb.<init>(Mydb.java:17)
at com.ib.client.examples.Example1.run(Example1.java:40)

任何帮助将不胜感激。谢谢。

4

1 回答 1

2

我不知道您要使用哪个 JDBC 驱动程序,但到目前为止我发现的最好的 SQLite JDBC 驱动程序是由 Xerial 项目制作的: http ://www.xerial.org/trac/Xerial/wiki/SQLiteJDBC

您可以在此处找到最新版本的驱动程序: http ://www.xerial.org/maven/repository/snapshot/org/xerial/sqlite-jdbc/3.7.8-SNAPSHOT/

它使用适用于 Windows(32 和 64 位)、Linux(32 和 64 位)和 MacOS(32 和 64 位)的本机驱动程序,并在平台不受支持的情况下回退到纯 java 实现。

所有本机库(dll、so 等)都包含在驱动程序的 JAR 文件中,您无需担心加载它们中的任何一个。它将为您自动检测正确的库。

编辑:如果您尝试从命令行运行程序,则必须在类路径中指定每个 jar 文件。在类路径环境变量中设置它们的路径是不够的。

例子:

java YourProgram -cp classes;lib/sqlite.jar;c:\libs\java\lib1.jar
于 2012-07-06T12:05:59.953 回答