【发布时间】:2018-10-31 16:56:03
【问题描述】:
我从 H2 文档中看到您 can open files on the classpath。
我在打开连接时尝试了各种 URL(例如 jdbc:h2:classpath:/myDatabase),但似乎没有找到资源 - 但当我尝试 MyClass.class.getClassLoader().getResourceAsStream("myDatabase") 时,它可以找到它。
数据库位于src\test\resources 的类路径中。
任何想法我做错了什么?
【问题讨论】:
-
正确的格式是这样的:
jdbc:h2:file:/data/sample。您也可以尝试使用相对文件名 -
@Ivan
Exception in thread "main" org.h2.jdbc.JdbcSQLException: A file path that is implicitly relative to the current working directory is not allowed in the database URL "jdbc:h2:file:/data/myDatabase". Use an absolute path, ~/name, ./name, or the baseDir setting instead. [90011-194] at org.h2.message.DbException.getJdbcSQLException(DbException.java:345) -
你打算如何包装这个? src 听起来好像它不在您的类路径上,但是在您打包/运行程序时作为资源放置在那里。你不应该真的期望资源是可写的,但我怀疑你的数据库将会是。所以有些东西没有正确排列。
-
如果你不能让它工作(我也不能)作为替代方案,你可以尝试一个内存数据库,它只设置到已保存数据库的链接?
-
你检查过这个答案了吗,stackoverflow.com/a/6507639/2067492 似乎是从 jar 文件创建一个文件系统。您是否考虑过将数据库读入内存并创建内存数据库?