我正在构建一个RCP应用程序。我只有一个插件项目,我正在尝试导出为产品。 我使用sqlite数据库文件。 虽然我正在测试我的应用程序和我的产品来自Run of eclipse根本没有任何问题, 当我导出产品时,数据库访问失败。这就是我打开数据库连接的方式
dbConnection = DriverManager.getConnection("jdbc:sqlite:"+FileLocator.resolve(Platform.getBundle("BundleID").getEntry("dbFile")).getPath());
我的dbFile在我的项目根文件中,导出后,它在plugins文件夹中的BundleID.jar中找到,因此应用程序无法打开它,因为计算的路径是......就像......插件/ BundleId.jar!/ DBFILE“
“!”之前/是在字符串!!!
为了克服这个问题,我能做点什么吗?
答案 0 :(得分:1)
在FileLocator.toFileURL()
返回的URL
上使用FileLocator.resolve()
,以获得更正常的网址。
注意:这会将您的jar扩展到临时缓存,以便返回正常的文件URL。此缓存不保证是持久的,因此如果您希望数据库更改保持不变,则需要将数据库放在其他位置。
一种可能性是将数据库复制到插件状态数据中的工作空间.metadata(请参阅Platform.getStateLocation(bundle)
。