很多时候,我们需要获取Eclipse平台中相关插件的信息,如位置,插件里面某个目录或文件等。
在Eclipse提供的API中,Platform类提供了基础的获取方法。以下重点描述Bundle、URL、FileLocator等互相结合的使用
1、在Eclipse中获取插件路径
1)在Run起来的Eclipse中调试,和真正将其打成插件部署到Eclipse,两者之间可能会出现一些不同。调试方式:将已部署好插件的Eclipse通过debug的方式启动,同时在相关的地方通过System.out.打印出来。Eclipse Debug启动方式,在cmd中eclipsec.exe -debug
2)通过bundle.getLocation()得到的String,从样式上看好像是一个符合URL格式的字符串,但此处会出现协议为reference且后面接着是file://XXX。故其返回结果暂时不清楚用于什么用途。值得注意的是,如果你通过Run起来的方式调试的时候,很可能会看到这样的字符串:reference:file:/E:/workSpace/XXXProject/,这样很容易导致使用如下方式去获取插件路径E:/workSpace/XXXProject/:
URL url = new URL(bundle.getLocation())
URL realUrl = new URL(FileLocator.toFileURL(url).getPath())
从而拿到路径,但不幸的是,该方式去获取会导致你将项目打成插件部署到Eclipse的时候出错。因为此时realUrl是相对于Eclipse_Home的相对路径。
3)真正正确获取方式:
URL installLocation = bundle.getEntry("/");
URL local = Platform.asLocalURL(installLocation); //此处目前推荐使用FileLocator的toFileURL替换
URL platformContextURL = subDirPath == null ? local : new URL(
local, subDirPath.toString());
String fullPath = (new File(platformContextURL.getPath()))
.getAbsolutePath();
osPath = new Path(fullPath)
获取Eclipse平台插件路径
最新推荐文章于 2021-08-24 11:14:52 发布