Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring 在java webapp中,hsqldb url赢了';不接受相对路径。这是因为maven配置吗?_Spring_Maven_Jakarta Ee_Web Applications_Hsqldb - Fatal编程技术网

Spring 在java webapp中,hsqldb url赢了';不接受相对路径。这是因为maven配置吗?

Spring 在java webapp中,hsqldb url赢了';不接受相对路径。这是因为maven配置吗?,spring,maven,jakarta-ee,web-applications,hsqldb,Spring,Maven,Jakarta Ee,Web Applications,Hsqldb,我正在开发一个由另外两个maven模块组成的webapp 我有一个表示数据库层的模型模块。它在test/resources/META-INF中有spring应用程序上下文test model config.xml用于测试,在test/resources'默认包中有属性文件。以及resources/META-INF中的model config.xml,它是实时上下文,应该从webapp中选择属性。 到目前为止建造良好,工作良好,没有问题 - <!-- test-model-config

我正在开发一个由另外两个maven模块组成的webapp

我有一个表示数据库层的模型模块。它在
test/resources/META-INF
中有spring应用程序上下文
test model config.xml
用于测试,在
test/resources'默认包中有属性文件。以及
resources/META-INF
中的
model config.xml
,它是实时上下文,应该从webapp中选择属性。 到目前为止建造良好,工作良好,没有问题

-    <!-- test-model-config.xml and model-config.xml have the same thing-->
    <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
    <property name="driverClassName" value="${jdbc.driverClassName}" />
    <property name="url" value="${jdbc.url}" />
    <property name="username" value="${jdbc.username}" />
    <property name="password" value="${jdbc.password}"  />
</bean>
还有另一个模块服务具有相同类型的配置,其中有一个测试配置文件和一个活动配置文件。这个单独的模块服务也没有问题。构建良好,工作正常

现在,webapp在
/webpages/web-INF
general.properties
中有
webapp config.xml
,用于模型和服务模块所需的所有属性。因此
general.properties
webapp-log4j.properties
在webapp的
resources的默认包中

   <import resource="classpath:META-INF/model-config.xml" />
   <import resource="classpath:META-INF/service-config.xml" />
   <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
     <property name="locations">
        <list>
            <value>classpath:general.properties</value>
            <value>classpath:webapp-log4j.properties</value>
        </list>
     </property>
   </bean>
它还可以很好地构建和运行问题

1:日志显示:

java.sql.SQLException:文件输入/输出错误classpath:target/mynewdb.properties java.io.FileNotFoundException:classpath:target/mynewdb.properties.new(没有这样的文件或目录)完整调试输出为

我真的很惊讶,因为这是我第一次遇到这种错误。它运行良好,绝对url为
/media/Repo/myproject/mydb;create=true
,但我们的想法是将其放在webapp目标中,以便在删除目标文件夹时将其删除

我不知道,已经两天了。 我怎样才能解决这个问题?这是我没有看到/正在做的事情吗?这是因为maven配置吗? 我的pom是可见的
感谢阅读。

我相信
general.properties
中的
jdbc.url
语法不正确-您不能为
文件指定
类路径
位置
-它必须是绝对或相对路径。请参阅jdbcConnection,数据库文件路径相对于JVM的当前工作目录

在从Maven sunfire插件运行JVM的情况下(例如),必须设置属性
workingDirectory
(或任何其他插件的相应选项)


您可以使用
res:
模式而不是
file:
从类路径获取数据库,但它仅限于只读访问。

我的HSQLDB文件数据库正在使用以下JDBC URL工作:

jdbc:hsqldb:res:/db/mydb
其中mydb是HSQLDB文件的名称,位于以下目录中:

/WEB-INF/classes/db

我删除了classpath关键字。它之所以存在,是因为我用于模型模块的那一个工作得很好;create=true
nor
jdbc.url=jdbc:hsqldb:file:/mynewdb;create=true
nor
jdbc.url=jdbc:hsqldb:file:/target/mynewdb;create=true
nor
jdbc.url=jdbc:hsqldb:file:target/mynewdb;create=true
正在工作,但我相信,它遵循连接字符串规则:jdbc:hsqldb:file:[]'(与旧表单的语义相同)正如Yves Martin指出的,此解决方案可以工作,但会将数据库限制为只读访问。
jdbc:hsqldb:res:/db/mydb
/WEB-INF/classes/db