2013-04-01 3 views
0

Как initialize H2 with a file, который содержится в банке?Инициализировать H2 в памяти из файла, содержащегося в банке?

В настоящее время я получаю это исключение:

TestCase (CheckTest): org.h2.jdbc.JdbcSQLException: IO Исключение: «java.io.FileNotFoundException: /Users/user1/.m2/ репозиторий/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) находится внутри файла фляги 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.

Возможно, это изящное обходное решение, которое не подразумевает временные файлы.



Дополнительная информация: Существует метод, который смотрит на ресурсы, если resource is found в пути к классам метод возвращает resource's path. Затем путь ресурса (/Users/user1/.m2/repository/a/3.10-SNAPSHOT/a-SNAPSHOT-tests.jar!/h2_db.sql) передается как параметр в метод, который initializes the database.

+0

Что вы пробовали? –

+0

@ThomasMueller Только что отредактировал этот вопрос. Btw, H2 отлично! – user454322

+0

С помощью «что вы пытались» я имел в виду: вы могли бы предоставить исходный код, который вы использовали? –

ответ

0

As documented, the file name must start with the zip: prefix:

zip:/Users/user1/.m2/repository/a/3.10-SNAPSHOT/a-SNAPSHOT-tests.jar!/h2_db.sql 
+0

Спасибо. Я уже нашел ответ во время просмотра этого другого вопроса http://stackoverflow.com/questions/12069224/how-to-compress-memory-space-of-h2-database-in-memory-mode/12071445 – user454322

Смежные вопросы