在插件中的相对路径中定位资源的问题
Problems locating resources at relative path in a plugin
我的插件有 html 文件资源,它显示在 SWT 浏览器小部件上。
我可以使用以下代码从插件中的资源文件夹中找到这个 html 文件:
public File resolveResource(URL url) {
File resolvedFile = null;
try {
URL resolvedFileURL = FileLocator.toFileURL(url);
URI resolvedURI = new URI(resolvedFileURL.getProtocol(), resolvedFileURL.getPath(), null);
resolvedFile = new File(resolvedURI);
} catch (Exception e) {
// exception handling
}
return resolvedFile;
}
现在这个 html 文件资源引用了一些 css 图像,这些图像存在于插件内的同一资源文件夹中。
问题是当我打包和部署插件并尝试 运行ning 它时 - 图像和 css 没有得到 displayed/resolved。
当我 运行 它 'Eclipse Application' 来自 IDE.
时,这工作正常
HTML 文件资源:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<meta name="viewport" content="initial-scale=1.0; maximum-scale=1.0; minimum-scale=1.0; user-scalable=no; width=device-width" />
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<link rel="stylesheet" href="css/styles.css" type="text/css" />
</head>
<body>
<div class="content" id="parent">
</div>
<div class="footer">
All contents copyright 2014.
</div>
</body>
</html>
FileLocator.toFileURL
期望 FileLocator.find
返回的格式为 URL。正常用法是:
Bundle bundle = Platform.getBundle("plugin id");
URL url = FileLocator.find(bundle, new Path("plugin relative path"), null);
URL fileURL = FileLocator.toFileURL(url);
使用 FileLocator.find
很重要,因为特殊的 URL 用于插件 Jar 文件中的资源。
如果您需要访问文件夹中的其他文件,那么您应该为您的插件使用一个 'feature' 项目,并指定插件在插件安装期间解压缩,以便为文件创建一个普通文件夹。或使用 'Eclipse-BundleShape' - 有关更多详细信息,请参阅 here。
我的插件有 html 文件资源,它显示在 SWT 浏览器小部件上。
我可以使用以下代码从插件中的资源文件夹中找到这个 html 文件:
public File resolveResource(URL url) {
File resolvedFile = null;
try {
URL resolvedFileURL = FileLocator.toFileURL(url);
URI resolvedURI = new URI(resolvedFileURL.getProtocol(), resolvedFileURL.getPath(), null);
resolvedFile = new File(resolvedURI);
} catch (Exception e) {
// exception handling
}
return resolvedFile;
}
现在这个 html 文件资源引用了一些 css 图像,这些图像存在于插件内的同一资源文件夹中。
问题是当我打包和部署插件并尝试 运行ning 它时 - 图像和 css 没有得到 displayed/resolved。
当我 运行 它 'Eclipse Application' 来自 IDE.
时,这工作正常HTML 文件资源:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<meta name="viewport" content="initial-scale=1.0; maximum-scale=1.0; minimum-scale=1.0; user-scalable=no; width=device-width" />
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<link rel="stylesheet" href="css/styles.css" type="text/css" />
</head>
<body>
<div class="content" id="parent">
</div>
<div class="footer">
All contents copyright 2014.
</div>
</body>
</html>
FileLocator.toFileURL
期望 FileLocator.find
返回的格式为 URL。正常用法是:
Bundle bundle = Platform.getBundle("plugin id");
URL url = FileLocator.find(bundle, new Path("plugin relative path"), null);
URL fileURL = FileLocator.toFileURL(url);
使用 FileLocator.find
很重要,因为特殊的 URL 用于插件 Jar 文件中的资源。
如果您需要访问文件夹中的其他文件,那么您应该为您的插件使用一个 'feature' 项目,并指定插件在插件安装期间解压缩,以便为文件创建一个普通文件夹。或使用 'Eclipse-BundleShape' - 有关更多详细信息,请参阅 here。