如何从Eclipse插件获取资源路径

时间:2016-01-21 12:10:05

标签: eclipse eclipse-plugin

我正在使用Eclipse Plugin-in-project开发一个Eclipse插件,它将在工具栏中添加一个菜单项。

我的插件项目依赖于一个文件,该文件位于我想要该文件路径的同一个插件项目中。

以下是我用来获取路径的示例代码:

Bundle bundle = Platform.getBundle("com.feat.eclipse.plugin");
URL fileURL = bundle.getEntry("webspy/lib/file.txt");
File file = null;
String path=null;
try {
    file = new File(FileLocator.resolve(fileURL).toURI());
    path = file.getAbsolutePath();
} catch (URISyntaxException e1) {
    e1.printStackTrace();
} catch (IOException e1) {
    e1.printStackTrace();
}

从Eclipse Run as>运行时Eclipse Application 它给了我正确的路径。但是当我将我的插件导出为jar并将其添加到我的Eclipse插件文件夹中时,它没有给我正确的路径。

请帮我解决这个问题!

2 个答案:

答案 0 :(得分:4)

使用:

URL url = FileLocator.find(bundle, new Path("webspy/lib/file.txt"), null);

url = FileLocator.toFileURL(url);

File file = URIUtil.toFile(URIUtil.toURI(url));

当您的文件打包在jar FileLocator.toFileURL中时,会将它们复制到临时位置,以便您可以使用File访问它们。

答案 1 :(得分:0)

jars中的文件没有{J}文件中的java.io.File

您可能希望FileLocator.openStream(...)读取文件内容。

如果您真的需要java.io.File,那么您可以考虑使用Eclipse EFS及其IFileStore.toLocalFile(...)将文件解压缩到临时目录。像EFS.getStore(fileURL).toLocalFile(EFS.CACHE, null)之类的东西应该做你想要的,但请记住,这会将文件放在临时目录中,并在Eclipse出口处将其删除。