2011-11-03 11 views
5

実際にいくつかのソースを生成するout mavenプラグイン用のm2eコネクタを開発中です。生成されたソース(フォルダ)をワークスペースにソースフォルダとして追加する必要があります。Eclipseプラグインからソースフォルダをプログラムで追加します

私が編集.classpathファイルの収集javacoreを使用:それは言う

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(...)のいずれかの方法を試してください。

+0

私のミスを...私が悪い書きましたコード。私はJavaCore.newProjectEntry(...)を試して例外がありました:IClasspathEntryのパスは絶対でなければなりません –

関連する問題