一旦我使用JPA部署我的应用程序,用户就选择在某处安装它。然后,属性设置为:
<property name="javax.persistence.jdbc.url" value="jdbc:derby:db;create=true"/>
被解释为以下异常: 无法在\ db中创建数据库。 在整个开发过程中,它曾经是项目文件夹的相对路径,而不是现在的根。 我该怎么做才能使路径保持相对于安装应用程序的文件夹? 或者更糟糕的是,用户目录。
答案 0 :(得分:2)
您应该在某处编写安装位置,并在创建连接之前将derby.system.home
系统属性设置为此位置。引用Using Java DB in Desktop Applications文章:
连接到Java DB数据库
...
所有连接网址都包含以下内容 形式:
jdbc:derby:<dbName>[propertyList]
网址的
dbName
部分 标识特定数据库。一个 数据库可以是其中之一 地点:在当前的工作中 目录,在类路径上,在JAR中 文件,在特定的Java DB数据库中 主目录,或绝对的 文件系统上的位置。的的 最简单的方法来管理您的数据库 嵌入式环境中的位置是 设置derby.system.home
系统 属性。该属性告诉Java DB 所有的默认家庭位置 数据库即可。通过设置此属性, 地址簿演示确保了这一点 Java DB总是找到正确的 应用数据库。应用程序 数据库名为DefaultAddressBook
, 它将存在于目录中 由derby.system.home
表示 属性。此连接URL 数据库看起来像这样:jdbc:derby:DefaultAddressBook
...
连接
DefaultAddressBook
数据库,演示必须先设置derby.system.home
系统属性。 该演示使用.addressbook
用户家的子目录 目录。使用System类 找出用户的主目录。 然后再次使用该类来设置derby.system.home
财产:private void setDBSystemDir() { // Decide on the db system directory: <userhome>/.addressbook/ String userHomeDir = System.getProperty("user.home", "."); String systemDir = userHomeDir + "/.addressbook"; // Set the db system directory. System.setProperty("derby.system.home", systemDir); }