Eclipse RCP 浏览器加载本地 html

Eclipse RCP browser load local html

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

雎小米

FileLocator.toFileURL(url) 方法将插件 jar 中的资源复制到一个临时位置,以便它可以 return 一个文件。由于您没有对其他资源执行相同的操作,html 将无法找到它们。

您可以对所有需要的资源调用 FileLocator.toFileURL 以将它们全部放在临时位置。

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

来做到这一点
Eclipse-BundleShape: dir

在插件中MANIFEST.MF

注意:如果插件是功能的一部分,则应在功能中为插件指定 'unpack the plugin archive open after installation'。