在RCP应用程序开发中,我正在尝试使用浏览器(org.eclipse.swt.browser.Browser)组件来加载捆绑在插件中的本地html文件。 插件项目文件结构如下所示:
project-name
+-/src
+-/html
+/META-INF
...
在代码中,我使用以下代码加载html文件:
String html = "/html/index.html";
URL url = FileLocator.find(Activator.getDefault().getBundle(), new Path(html), null);
url = FileLocator.toFileURL(url);
browser.setUrl(url.toString());
这个html文件(index.html)引用了一些css文件,javascript文件和其他html文件。这些资源抵制在html文件夹中。 上面的代码在Eclipse开发环境中运行良好。但是当我导出到RCP产品时,它会加载这个index.html,但html文件显示布局是一个混乱。 我试图找到发生的事情,所以我在产品工作区中查找资源。 我在产品工作区中找到了一个名为index.html的文件,但没有找到其他资源。我认为这是原因。 但是如何解决这个问题呢? 谢谢!
朱小米答案 0 :(得分:3)
FileLocator.toFileURL(url)
方法将资源从插件jar内部复制到临时位置,以便它可以返回文件。由于你没有对其他资源做同样的事情,html将无法找到它们。
您可以在所有必需资源上调用FileLocator.toFileURL
,以便将它们全部放在临时位置。
您还可以指定不应将插件压缩到jar中,以便FileLocator.toFileURL
不需要使用临时位置。您可以通过指定
Eclipse-BundleShape: dir
在插件MANIFEST.MF
中注意:如果插件是功能的一部分,那么在安装后打开插件存档的包装就会打开'应该为功能中的插件指定。