从eclipse插件访问相对路径

从eclipse插件访问相对路径,eclipse,eclipse-plugin,eclipse-rcp,uri,relative-path,Eclipse,Eclipse Plugin,Eclipse Rcp,Uri,Relative Path,有人知道如何从自制的Eclipse插件中获取具有uri的文件吗 绝对路径不会有问题: URI.createFileURI("C:/Users/hp/workspace(dke)/SMartGen/StarSchema.profile.uml"); 但是我如何相对地访问本地资源呢 URI.createFileURI("jar:file:/%ECLIPSE_HOME%/plugins/SMartGen.jar!StarSchema.profile.uml"); 这样不行 对每一个答案都感到高兴

有人知道如何从自制的Eclipse插件中获取具有uri的文件吗

绝对路径不会有问题:

URI.createFileURI("C:/Users/hp/workspace(dke)/SMartGen/StarSchema.profile.uml");
但是我如何相对地访问本地资源呢

URI.createFileURI("jar:file:/%ECLIPSE_HOME%/plugins/SMartGen.jar!StarSchema.profile.uml");
这样不行

对每一个答案都感到高兴

lg martin使用。

示例:

URL iconUrl = FileLocator.find(Platform.getBundle("myBundle"), new Path("icons/someIcon.png"), null);

这将获取文件“someIcon.png”的URL,该文件位于捆绑包“myBundle”中的“icons”文件夹中。

要从eclipse中获取资源,可以使用
org.osgi.framework.bundle.getEntry(String)
。它返回一个标准的
java.net.URL
,也可用于获取
InputStream
以供使用。它的优点是不关心插件是在目录形式、jar形式还是在工作区中

Bundle bundle = FrameworkUtil.getBundle(MyClass.class);
URL url = bundle.getEntry("StarSchema.profile.uml");

URL也有一个方便的
toURI()
方法。

但是现在我在将java.net.URL更改为org.eclipse.emf.common.util.URI URL时遇到了另一个问题。toURI()和util.URI在某种程度上是不同的,我将为它发布另一个问题。如果您确实需要文件的绝对URL,请使用
FileLocator.resolve(URL)
FileLocator.find中查找所生成的URL。