Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database eclipse产品access数据库文件导致错误_Database_Eclipse_File_Rcp - Fatal编程技术网

Database eclipse产品access数据库文件导致错误

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(

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

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并再次测试。