2011-11-03 111 views
5

我正在開發用於Maven插件的m2e連接器,它實際上會生成一些源文件。我需要將生成的源(文件夾)作爲源文件夾添加到工作區。以編程方式從Eclipse插件添加源文件夾

我以前的javacore爲編輯.classpath文件:

IJavaProject javaProject = JavaCore.create(proj); 
    IClasspathEntry[] entries = javaProject.getRawClasspath(); 

    IClasspathEntry[] newEntries = new IClasspathEntry[entries.length + 1]; 
    System.arraycopy(entries, 0, newEntries, 0, entries.length); 

    Path myPath = new Path("target/generated-sources"); 
    IClasspathEntry myEntry = JavaCore.newSourceEntry(myPath); 

    newEntries[entries.length] = JavaCore.newSourceEntry(myEntry.getPath()); 
    javaProject.setRawClasspath(newEntries, null); 

但這碼不起作用,它說: 路徑爲IClasspathEntry必須是絕對

如果我試圖用絕對路徑,它已被寫入.classpath,但在eclipse中它並未顯示爲源文件夾。

有沒有人有任何建議?這應該是一件容易的事,但我無法弄清楚如何解決它。

回答

5

問題解決了......這是比較容易然後我希望......

IJavaProject javaProject = JavaCore.create(proj); 
IClasspathEntry[] entries = javaProject.getRawClasspath(); 

IClasspathEntry[] newEntries = new IClasspathEntry[entries.length + 1]; 
System.arraycopy(entries, 0, newEntries, 0, entries.length); 

IPath srcPath= javaProject.getPath().append("target/generated-sources"); 
IClasspathEntry srcEntry= JavaCore.newSourceEntry(srcPath, null); 

newEntries[entries.length] = JavaCore.newSourceEntry(srcEntry.getPath()); 
javaProject.setRawClasspath(newEntries, null); 

,這將源項添加到的.classpath文件:

+0

謝謝先生!儘管目前我無法嘗試,但我希望明天能夠使用這些信息。鑑於關於該問題的糟糕文檔,您可能爲我省去了很多頭痛。 – Vectovox

0

嘗試使用JavaCore.newSourceEntry(...)方法之一而不是JavaCore.newProjectEntry(...)

+0

我的錯......我寫壞碼。我嘗試過JavaCore.newProjectEntry(...),但有例外:IClasspathEntry的路徑必須是絕對的 –

相關問題