Как 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.
Что вы пробовали? –
@ThomasMueller Только что отредактировал этот вопрос. Btw, H2 отлично! – user454322
С помощью «что вы пытались» я имел в виду: вы могли бы предоставить исходный код, который вы использовали? –