2011-06-06 45 views
3

有没有人知道如何从自制的Eclipse插件中使用uri获取文件?从eclipse-plugin访问相对路径

绝对路径就没有问题了:

URI.createFileURI("C:/Users/hp/workspace(dke)/SMartGen/StarSchema.profile.uml"); 

但是我怎么访问本地资源比较?

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

不以这种方式工作....

快乐每一个答案。

LG马丁

回答

3

使用FileLocator

例子:

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

这将让位于在捆绑“myBundle”中的“图标”文件夹中的文件“someIcon.png”的URL。

+0

THX, 作品非常好 – Martin 2011-06-08 07:00:18

+0

但现在我得到了另一个问题,改变 的java.net.URL到 org.eclipse.emf.common.util.URI url.toUri()和util.URI在一些种类不一样 我会为此发布另一个问题。 – Martin 2011-06-08 07:11:43

+0

如果您确实需要该文件的绝对URL,请使用来自FileLocator.find的结果URL中的FileLocator.resolve(url)。 – Simon 2014-08-26 13:27:56

0

为了从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()也。