2011-11-03 11 views
5

Sto sviluppando un connettore m2e per il plug-in Maven, che in realtà genera alcune fonti. Devo aggiungere sorgenti (cartella) generate allo spazio di lavoro come cartella sorgente.Aggiunta programmatica della cartella di origine dal plug-in Eclipse

ho usato javacore per il file modificare .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); 

Ma questo codice non funziona si dice: percorso per IClasspathEntry deve essere assoluta

Se ho cercato di usare percorso assoluto, è stato scritto in .classpath ma in Eclipse non è stato visualizzato come cartella di origine.

Qualcuno ha qualche suggerimento? Dovrebbe essere un compito facile ma non riesco a capire come risolverlo.

risposta

5

Problema risolto ... era più facile allora che mi aspettavo ...

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); 

E questo si aggiungerà la voce di origine a .classpath di file:

+0

Grazie signore! Mentre al momento non posso provarlo, spero di poter usare queste informazioni domani. Potresti aver risparmiato un sacco di mal di testa data la scarsa documentazione che c'è sul problema. – Vectovox

0

Provare uno dei metodi JavaCore.newSourceEntry(...) anziché JavaCore.newProjectEntry(...).

+0

il mio errore ... ho scritto male codice. Ho provato JavaCore.newProjectEntry (...) e c'era un'eccezione: Path per IClasspathEntry deve essere assoluto –

Problemi correlati