我正在使用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插件文件夹中时,它没有给我正确的路径。
请帮我解决这个问题!
答案 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出口处将其删除。