做了一個Eclipse插件,操作一個java項目,我可以獲得src中的java文件(鼠標選中)的IFile對象,但是無法獲得它對應的bin中的Class文件的IClassFile對象。理論上,我認為很容易實現,但是現實終究不如人意,網上找了很多,都沒有答案(英文網站也搜過,也可能是我查的方法不對),誰能給我點幫助,謝謝。
PS:對於lib裡的jar文件中的類,通過IJavaProject.findType(類全名)方法可以獲得對應類的IType,然後通過IType的getClassFile方法,可以獲得IClassFile對象。但是對於src(或bin)中的東西不行,只能獲得IType,而getClassFile方法得到的結果是NULL。問什麼?要怎麼做?
不知道是我沒說明白,還是大家都不會,或者不屑回答,連點建議都沒收到 @- -@!! !
認真看過我問題的都謝過,這個問題我自己已經解決(解決方法不知道是否簡單,但算正規吧)。
首先說下原因,這個問題大體是因為classpath(IClassEntry[])中沒有bin目錄(跟想象的不一樣啊,只有src目錄),所以只能訪問src中java文件,而遮蔽了對應的class文件(個人想法)。
所以,要想訪問bin下的class文件,取得IClassFile對象,必須把bin目錄加入到Classpath中。我的做法是,通過副本,把classpath的src目錄換成bin目錄,然後使用修改後的副本的就可以了。
ps:修改classpath的動作必須針對副本,不然無效,並且這種操作對項目本身的classpath(buildpath)會有實質改動。