0

如何使用 jar 中包含的文件初始化 H2 ?

目前我得到这个例外:

testCase(CheckTest):org.h2.jdbc.JdbcSQLException:IO异常:“java.io.FileNotFoundException:/Users/user1/.m2/repository/a/3.10-SNAPSHOT/a-SNAPSHOT-tests.jar!/h2_db。 sql (没有这样的文件或目录)"; “文件:/Users/user1/.m2/repository/a/3.10-SNAPSHOT/a-3.10-SNAPSHOT-tests.jar!/h2_db.sql”;SQL 语句:(..)

我想用 ( h2_db.sql) 初始化数据库的文件在 jar 文件中a-3.10-SNAPSHOT-tests.jar

代码看起来像

initSqlFile = getInitSqlFile();
//initSqlFile = "/Users/user1/.m2/repository/a/3.10-SNAPSHOT/a-SNAPSHOT-tests.jar!/h2_db.sql"
//initSqlFile is a file contained ina jar, note the "!"

url = String.format(
      "jdbc:h2:mem:%s;MODE=PostgreSQL;LOCK_TIMEOUT=500;ifexists=true;INIT=runscript from '%s';DB_CLOSE_DELAY=-1;MVCC=TRUE",
       testSuitName, initSqlFile);

// later ...
con = DriverManager.getConnection(url, user, passwd);

虽然这个问题可以相对容易地解决,但我想知道 H2 是否支持从 jar 文件中的文件进行初始化。

或者也许是一个优雅的解决方法,这并不意味着临时文件。



附加信息:有一个查找资源的方法,如果在类路径中找到资源,则该方法返回资源的路径。然后将资源的路径 ( /Users/user1/.m2/repository/a/3.10-SNAPSHOT/a-SNAPSHOT-tests.jar!/h2_db.sql) 作为参数传递给初始化数据库的方法。

4

1 回答 1

0

如文档所述,文件名必须以zip:前缀开头:

zip:/Users/user1/.m2/repository/a/3.10-SNAPSHOT/a-SNAPSHOT-tests.jar!/h2_db.sql
于 2013-04-02T08:03:01.710 回答