我有一个java应用程序,我将分发给Mac和Windows操作系统。该应用程序使用hibernate与SQL Lite数据库进行通信以读取和写入数据。我已经能够生成.jar文件并使用Lauchj4来创建.exe。由于我发现.jars不可更改,我已将数据库包含在.jar中,当应用程序首次运行时,它将在其根文件夹中创建数据库的副本。这是应用程序将与之通信的数据库。
到目前为止一切正常。但是,当在Windows / Program Files文件夹中安装应用程序时,我会在应用程序运行时遇到问题。从数据库中读取一切都很好。当我需要写入数据库时会发生此问题。发生异常。我相信这是因为程序文件文件夹中的权限,因为如果我将该应用程序移动到另一个文件夹一切都很好。
有没有办法解决这个问题?我不习惯在程序文件文件夹中更改权限。我正在考虑将数据库复制到用户的\Application Data
文件夹中。但是我的hibernate配置是在xml文件中指定的,如下所示:
<!-- SQLite -->
<beans:bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">
<beans:property name="driverClassName" value="org.sqlite.JDBC" />
<beans:property name="url"
value="jdbc:sqlite:database.db" />
</beans:bean>
那么如何在运行时将此bean的url属性指向用户的\Application Data
文件夹?
我需要考虑的另一件事是......如何创建适合Windows和Mac的解决方案?