做了一个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)会有实质改动。