[英]Open H2 Database from Classpath
我从 H2 文档中看到您可以在 classpath 上打开文件。
我在打开连接时尝试了各种 URL(例如jdbc:h2:classpath:/myDatabase
),但似乎没有找到资源 - 但是当我尝试MyClass.class.getClassLoader().getResourceAsStream("myDatabase")
它可以觉得还好。
数据库位于src\\test\\resources
的类路径上。
任何想法我做错了什么?
您可以找到myDatabase
文件。 当在本地运行且未打包时(例如从IDE内部),您可以执行以下操作:
URL res = MyClass.class.getResource("/myDatabase");
String url = "jdbc:h2:" + res.toString();
这将输出完整的资源路径,例如jdbc:h2:file:/home/.../classes/myDatabase
当您将应用程序打包为JAR或WAR时,此功能将无效。 在这种情况下, myDatabase
将打包在一个ZIP存档中,以引用此帖子 :
压缩数据库和类路径中的数据库的主要问题是:您不能进行真正的随机访问。 您只能从流中读取。 需要随机访问,因此模拟如下:当seek(pos)大于当前位置时,将进行跳过(基本上是读取)。 如果搜索位置较小,则关闭流并重新打开。 这很慢。
ZIP支持是基于Advanced> Pluggable File System docs的只读支持:
zip:基于只读zip文件的文件系统。 格式:zip:/ zipFileName!/ fileName。
您可能应该使用命令行参数或系统变量来提供myDatabase
的路径,并将其保留在打包的应用程序之外。
如果您检查此链接,我认为可以解决您的问题。
在此链接中提供了Windows和Linus / mac classpath设置。
[1]: https : //o7planning.org/en/11895/installing-h2-database-and-using-h2-console
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.