Java INIT=RUNSCRIPT和相对路径存在问题

Java INIT=RUNSCRIPT和相对路径存在问题,java,hibernate,maven-2,configuration,h2,Java,Hibernate,Maven 2,Configuration,H2,我对源路径(src/main-src/test)使用maven约定,并且我的sql脚本位于src/main/resources/scripts中 我想用H2内存运行我的应用程序,我想使用jdbc url初始化我的数据库: database.url=jdbc:h2:mem:;INIT=RUNSCRIPT FROM 'src/main/resources/scripts/create.sql'; 我的问题是这个相对路径(src/main/…)不起作用,如果init=runscript命令没有任何目

我对源路径(src/main-src/test)使用maven约定,并且我的sql脚本位于src/main/resources/scripts中

我想用H2内存运行我的应用程序,我想使用jdbc url初始化我的数据库:

database.url=jdbc:h2:mem:;INIT=RUNSCRIPT FROM 'src/main/resources/scripts/create.sql';
我的问题是这个相对路径(src/main/…)不起作用,如果init=runscript命令没有任何目标,H2也不会崩溃

有人知道我应该用什么方法来实现这一目标吗


谢谢

我建议初学者尝试使用绝对路径,只是检查一切是否正常。然后,检查您的类路径。例如,
bin/main/resources/scripts/create.sql
,假设
bin
是编译类的地方,并且在类路径上


由于源代码所在的
src
通常不在类路径上,因此这可能是问题的根源。

您可以使用以下url:
“jdbc:h2:mem:sample;INIT=RUNSCRIPT FROM'classpath:scripts/create.sql'”


有了它,就可以从类路径运行脚本。因此,您可以将其src/main/resources/scripts或src/test/resources/scripts放在您的maven(或其他)项目中

您编写了“如果init=runscript命令没有任何目标,H2将不会崩溃”-我无法重现这一点(在这种情况下,H2会抛出异常)。你使用什么版本的H2?你能试试最新的版本吗?我不知道这和以前不一样,但也许是。不,你是对的,现在它崩溃了。我不知道发生了什么。对于绝对路径,它是有效的,但不是我尝试过的任何相对路径组合。@Maxime:H2会抛出任何错误吗?是否有任何迹象表明找不到create.sql这方面的工作不正常?您是否尝试过将create.sql放在类路径中?抱歉:对于绝对路径,它可以工作,但我尝试过的任何相对路径组合都不行。脚本位于mywar.war/WEB-INF/classes/scripts/中。。我尝试了/WEB-INF/。。WEB-INF/。。etc无结果:/因为源代码所在的
src
通常不在Maven项目的类路径上,所以
src/main/resources
中的任何内容通常都包含在Java 11上的类路径i get
畸形异常:未知协议:classpath