【问题标题】:Eclipse RCP browser load local htmlEclipse RCP 浏览器加载本地 html
【发布时间】:2015-12-14 01:10:17
【问题描述】:

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

鞠小米

【问题讨论】:

    标签: java html eclipse browser rcp


    【解决方案1】:

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

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

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

    Eclipse-BundleShape: dir
    

    在插件 MANIFEST.MF 中

    注意:如果插件是功能的一部分,则应为功能中的插件指定“安装后打开的解压插件存档”。

    【讨论】:

    • 谢谢!有效。但我想知道 eclipse equinox MANIFEST 文件信息在哪里。在 Eclipse MANIFEST.MF 代码辅助中无法给出有关此标头的一些提示。其实我之前也试过找一些不同的header,但是失败了。
    • Eclipse 特定的标头记录在 here。 MANIFEST.MF 编辑器并不知道所有这些,因此必须“手动”添加它们。如果有帮助,请不要忘记接受答案(单击对勾)。
    猜你喜欢
    • 2015-07-29
    • 1970-01-01
    • 2015-10-26
    • 1970-01-01
    • 2018-03-06
    • 2015-12-31
    • 1970-01-01
    • 2012-05-11
    • 2015-03-12
    相关资源
    最近更新 更多