0

我正在构建一个 RCP 应用程序。我只有一个插件项目,我正在尝试作为产品导出。我使用 sqlite 数据库文件。当我从运行 eclipse 测试我的应用程序和我的产品时完全没有问题,当我导出产品时,数据库访问失败。这就是我打开数据库连接的方式

dbConnection = DriverManager.getConnection("jdbc:sqlite:"+FileLocator.resolve(Platform.getBundle("BundleID").getEntry("dbFile")).getPath());

我的 dbFile 在我的项目根文件中,导出后,它在插件文件夹中的 BundleID.jar 中找到,因此应用程序无法打开它,因为计算的路径类似于.... "/plugins/BundleId .jar!/dbFile"

这 ”!” 之前 / 在字符串中!!!

为了克服这个问题,我能做些什么吗?

4

1 回答 1

1

FileLocator.toFileURL()URL返回的 by上使用FileLocator.resolve()以获得更正常的 URL。

注意:这会将您的 jar 扩展为临时缓存,以便可以返回正常的文件 URL。此缓存不能保证是持久的,因此如果您希望数据库更改持久,您需要将数据库放在其他位置。

一种可能性是将数据库复制到插件状态数据中的工作区 .metadata(请参阅Platform.getStateLocation(bundle).

于 2013-10-07T18:59:40.850 回答