2013-12-10 139 views
4

我需要一个项目文件夹的绝对位置,所以我试图为什么IResource.getRawLocation()返回空值的IProject

project.getRawLocation() 

但这返回null(至少在我的情况中,我已导入项目手动使用导入...现有项目到工作区和我已检查复制项目到工作区复选框)。

的事情是,

project.getParent().getRawLocation() 

回报/work/Projekte/runtime-MyProduct.product这是正确的

project.members()[0].getRawLocation() 

回报/work/Projekte/runtime-MyProduct.product/Test/.cproject这是正确的为好。

因此,我期望

project.getRawLocation() 

将返回/work/Projekte/runtime-MyProduct.product/Test,但它返回null

任何人都可以解释和/或告诉我我错了吗?

+0

你能检查项目的ResourceInfo吗?可能是它的'幻影' –

回答

6

getRawLocation()的JavaDoc的说

如果这个资源是现有的项目,则返回的路径将是 等于在项目描述的位置路径。

和项目介绍IProjectDescription.getLocation()的JavaDoc说:如果默认位置应使用

getLocation()调用将返回路径返回

空。

+0

啊,我应该仔细阅读。谢谢。 –

+0

我的项目是一个现有的项目,但仍然getRawLocation()返回null ..可能这是因为我的项目没有在项目描述中设置“位置路径”。实际上这个eclipse-method的名称是真的很糟糕。 getRocationLocation()可以在我的项目中正常工作,我认为它是eclipse中的一个bug – Alex

+0

@Alex仔细阅读Javadoc - getRawLocation说它返回项目描述(IProjectDescription.getLocation)的路径,调用IProjectDescription.getLocation说,如果默认位置正在被使用,它将返回null - 所以对于一个普通的项目,预期为null –