H2 DB 驱动程序不在类路径中



我正在尝试通过Java连接到我的嵌入式H2数据库。我找到了有关此的各种线程和教程,现在有以下代码:

Connection con = null;
Properties connectionProps = new Properties();
connectionProps.put("user", "username");
connectionProps.put("password", "password");
try {
Class.forName("org.h2.Driver");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
con = DriverManager.getConnection("jdbc:h2:~/test", connectionProps);

我收到"找不到适合 jdbc:h2:~/test 的驱动程序"错误消息。我在某些线程中找到了Class.forName(...(作为解决方案,但它似乎不起作用(ClassNotFoundException(。

我读到驱动程序可能不在我的类路径中,但真的不知道我需要如何处理这些信息。在 IntelliJ 的数据库视图中,驱动程序似乎工作正常(我可以单击重新加载驱动程序,它确认 h2 驱动程序(。我做错了什么?

有几种方法可以添加到类路径中。 我建议尝试理解此页面 https://howtodoinjava.com/java/basics/java-classpath/以获取有关具有相似但不同结果的不同策略的更多信息。

对于此项目,最简单的方法可能是编辑您正在使用的"运行配置",并添加新的 VM 选项:

–classpath /path/to/local/h2/driver.jar

使用 jar 的绝对路径,这将允许它在以这种方式运行时存在于类路径中。 在我分享的链接中,这与将命令行参数添加到javajavac命令相同,因此此参数也可以在命令行上的 intellij 之外工作。

编辑:

根据注释,您似乎正在使用具有完全限定路径的 %PROGRAMFILES% 环境变量。

试试这个:

-classpath %PROGRAMFILES%H2binh2-1.4.200.jar

如果要在命令提示符下运行以下命令

echo %PROGRAMFILES%

我怀疑你会得到回应:

C:Program Files

这不是x86版本。 因此,要么使用环境变量并省略其值表示的路径部分(消除C:部分(

或者,如果这根本不是正确的程序文件文件夹,请避免它并尝试(请注意所需的引号,因为文件夹的名称中包含空格(:

--classpath "C:Program Files (x86)H2binh2-1.4.200.jar"

最新更新