2011-11-03 86 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的路径必须是绝对的 –

相关问题