我正在尝试通过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 的绝对路径,这将允许它在以这种方式运行时存在于类路径中。 在我分享的链接中,这与将命令行参数添加到java
或javac
命令相同,因此此参数也可以在命令行上的 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"