2010-07-27 91 views
32

每次我撥打IJavaProject.findPackageFragmentRoots(IClasspathEntry cpe)並將其傳遞給CPE_PROJECT類的IClasspathEntry時,它將返回一個空列表。我停下調試並運行在Eclipse顯示查看以下行,看看發生了什麼事情:爲什麼IJavaProject.findPackageFragmentRoots返回一個空數組?

IClasspathEntry cpe = javaProject.getRawClasspath()[8]; 
cpe.toString(); 
    (java.lang.String) /Some Project[CPE_PROJECT][K_SOURCE][isExported:false][combine access rules:false] 

// Show that the referenced project exists and has a root containing source 
IClasspathEntry cpe = javaProject.getRawClasspath()[8]; 
IProject someProject = ResourcesPlugin.getWorkspace().getRoot().getProject(cpe.getPath().toString()); 
IJavaProject someJavaProject = (IJavaProject) someProject.getNature(JavaCore.NATURE_ID); 
IPackageFragmentRoot pfr = someJavaProject.getPackageFragmentRoots()[0]; 
new Boolean(pfr.getKind() == IPackageFragmentRoot.K_SOURCE).toString(); 
    (java.lang.String) true 

IClasspathEntry cpe = javaProject.getRawClasspath()[8]; 
javaProject.findPackageFragmentRoots(cpe); 
    (org.eclipse.jdt.core.IPackageFragmentRoot[]) [] 

的類路徑條目是Java項目的類路徑的一部分,它是一種CPE_PROJECT的。另外,引用的Java項目(標題爲「某個項目」)至少包含一個包含源的源。根據javadoc for IJavaProject,似乎這應該返回至少一個IPackageFragmentRoot,但它不會。

任何想法我在這裏誤解?我怎麼能從一個類CPE_PROJECT的IClasspathEntry獲得IPackageFragmentRoots而不做一些冒犯的事情? (我的意思是,我可以從類路徑條目中獲取IJavaProject並遍歷其原始類路徑,忽略未導出的條目,以搜索IPackageFragmentRoots。)

+3

的bug已經提交:https://bugs.eclipse.org/bugs/show_bug.cgi?id=324367 – peskal 2010-09-05 04:45:46

+8

的bug已被修正。它解決了你的問題嗎? – 2011-05-11 20:12:03

+0

如果問題現在已解決,請發佈自我回答並接受,這樣可以關閉:) – 2011-07-13 05:04:06

回答

相關問題