Database eclipse产品access数据库文件导致错误
我正在构建一个RCP应用程序。我只有一个插件项目,我正试图导出为产品。 我使用sqlite数据库文件。 当我从eclipse运行测试我的应用程序和产品时,没有任何问题, 当我导出产品时,数据库访问失败。这就是我打开数据库连接的方式Database eclipse产品access数据库文件导致错误,database,eclipse,file,rcp,Database,Eclipse,File,Rcp,我正在构建一个RCP应用程序。我只有一个插件项目,我正试图导出为产品。 我使用sqlite数据库文件。 当我从eclipse运行测试我的应用程序和产品时,没有任何问题, 当我导出产品时,数据库访问失败。这就是我打开数据库连接的方式 dbConnection=DriverManager.getConnection(“jdbc:sqlite:+FileLocator.resolve(Platform.getBundle(“BundleID”).getEntry(“dbFile”)).getPath(
dbConnection=DriverManager.getConnection(“jdbc:sqlite:+FileLocator.resolve(Platform.getBundle(“BundleID”).getEntry(“dbFile”)).getPath())代码>
我的dbFile位于我的项目根文件中,导出后,它位于plugins文件夹的BundleID.jar中,因此应用程序无法打开它,因为计算的路径类似于。。。。“/plugins/BundleId.jar!/dbFile”
在/之前的“!”在字符串中
我可以做些什么来克服这个问题吗?对FileLocator.resolve()
返回的URL
使用FileLocator.toFileURL()
,以获得更正常的URL
注意:这将把您的jar扩展到一个临时缓存中,这样就可以返回一个普通的文件URL。此缓存不能保证是持久的,因此如果希望数据库更改持久化,则需要将数据库放在其他位置
一种可能是将数据库复制到插件状态数据中的workspace.metadata(参见Platform.getStateLocation(bundle)
您认为将我的文件放在导出的项目根目录中,并通过命令行参数提供路径是一个好方法吗?添加了建议的位置来回答。注意,在某些Eclipse安装中,插件安装位置可能是只读的。我很失望,也很困惑……我的产品…只要我在eclipse中运行应用程序,.application或.product都可以正常工作。当我导出产品时,即使尝试通过命令行参数传递到数据库的确切路径,我也无法使其正常工作!!!对此有什么好的解释吗???您是否将数据库放在.metadata中的状态位置?我这样使用Derby db(db是在该位置从头创建的)。我刚刚在那里复制了我的数据库。我将尝试在我的应用程序中创建datavbase并再次测试。