我正在使用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文件的路径。
答案 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。