eclipse插件的html文件路径

时间:2015-11-27 05:43:14

标签: html eclipse maven plugins

我正在使用Eclipse Luna为RCP和RAP Developers 4.4.2创建一个eclipse插件。这个插件是使用maven(和tycho)构建的。编码在java,javascript和html中完成。对于图形部分,使用html文件:

String INDEX_HTML = "main/resources/res/www/index.html";
String basePath= ClassName.class.getProtectionDomain().getCodeSource().getLocation().getPath();
File mHtmlFile = new File(basePath + INDEX_HTML);
mBrowser.setUrl(mHtmlFile.toURI().toString());

我在plugin.xml中指定了包含所有这些内容的类。 (告诉我是否需要plugin.xml的内容来解决这个问题)

现在的问题是,当我构建项目并将生成的jar放入Eclipse的dropins时,它会显示消息“无法显示页面”。 (而jar在'main / resources / res / www'中包含html文件)。 当我对html文件的路径进行硬编码时,它可以完美地工作。

请告诉我如何解决这个问题而不用硬编码html文件的路径。

2 个答案:

答案 0 :(得分:1)

如果这只是一个不引用插件中其他资源的HTML,您可以获得一个'文件'使用以下方式键入URL:

Bundle bundle = ... your plugin bundle

URL url = FileLocator.find(bundle, new Path("file path in the plugin"), null);

url = FileLocator.toFileURL(url);

FileLocator.toFileURL可以从jar中提取文件并将其放在临时位置。

如果HTML引用了您可能需要使用的其他资源

Eclipse-BundleShape: dir

在插件MANIFEST.MF中。这将把插件构建为目录而不是jar,以便可以在不复制的情况下引用插件中的文件。

注意:如果您使用的是'功能'打造“打开包装”#39; ' feature.xml中的选项'覆盖束形状。

您可以使用<{1}}获取

Bundle

(这必须在插件中的类中运行)

您也可以使用:

Bundle bundle = FrameworkUtil.getBundle(getClass());

可用于获取任何捆绑包。

答案 1 :(得分:0)

Web浏览器不知道如何在jar文件中显示网页。您需要在运行时使用FileLocator之类的实用程序制作HTML文件的副本。一次调用find() jar中该文件的URL,另一个调用它并提取该副本的file: URL。

http://help.eclipse.org/juno/index.jsp?topic=%2Forg.eclipse.platform.doc.isv%2Freference%2Fapi%2Forg%2Feclipse%2Fcore%2Fruntime%2FFileLocator.html&anchor=toFileURL(java.net.URL)