2011-11-03 27 views
5

Tôi đang phát triển kết nối m2e cho plugin maven, mà thực sự tạo ra một số nguồn. Tôi cần phải thêm nguồn được tạo (thư mục) vào không gian làm việc dưới dạng thư mục nguồn.Lập trình thêm thư mục nguồn từ plugin Eclipse

tôi đã sử dụng JavaCore cho tập tin chỉnh sửa 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); 

Nhưng mã này không hoạt động nó nói: Đường dẫn cho IClasspathEntry phải tuyệt đối

Nếu tôi cố gắng sử dụng đường dẫn tuyệt đối, nó đã được ghi vào .classpath nhưng trong nhật thực nó không được hiển thị như thư mục nguồn.

Có ai đề xuất gì không? Nó phải là nhiệm vụ dễ dàng nhưng tôi không thể tìm ra cách giải quyết nó.

Trả lời

5

Vấn đề giải quyết ... đó là dễ dàng hơn sau đó tôi mong đợi ...

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

Và điều này sẽ bổ sung thêm vào nguồn để classpath file:

+0

Cảm ơn bạn! Trong khi tôi không thể thử nó vào lúc này, tôi hy vọng sẽ có thể sử dụng thông tin này vào ngày mai. Bạn có thể đã tiết kiệm cho tôi rất nhiều đau đầu cho các tài liệu nghèo có về vấn đề này. – Vectovox

0

Thử một trong các phương thức JavaCore.newSourceEntry(...) thay vì JavaCore.newProjectEntry(...).

+0

sai lầm của tôi ... Tôi đã viết xấu mã. Tôi đã thử JavaCore.newProjectEntry (...) và có ngoại lệ: Đường dẫn cho IClasspathEntry phải tuyệt đối –