Eclipse RCP浏览器加载本地html

时间:2015-09-17 08:25:43

标签: java html eclipse browser rcp

在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的文件,但没有找到其他资源。我认为这是原因。     但是如何解决这个问题呢?     谢谢!

朱小米

1 个答案:

答案 0 :(得分:3)

FileLocator.toFileURL(url)方法将资源从插件jar内部复制到临时位置,以便它可以返回文件。由于你没有对其他资源做同样的事情,html将无法找到它们。

您可以在所有必需资源上调用FileLocator.toFileURL,以便将它们全部放在临时位置。

您还可以指定不应将插件压缩到jar中,以便FileLocator.toFileURL不需要使用临时位置。您可以通过指定

来执行此操作
Eclipse-BundleShape: dir

在插件MANIFEST.MF

注意:如果插件是功能的一部分,那么在安装后打开插件存档的包装就会打开'应该为功能中的插件指定。