如何让JDT编辑器看到更改的类文件?

时间:2015-01-22 13:09:19

标签: java eclipse-plugin eclipse-jdt .class-file

我正在开发一个Eclipse插件,它根据这些类文件中的一些Annotations更改Java项目的已编译类文件。

例如,假设我有一个注释@AddSomeField,我有一个像这样的Java源文件:

@AddSomeField
public class TestClass {}

然后我的插件可能会生成与以下源代码

对应的字节代码
public class TestClass {public static int SOME_FIELD = 0;}

并将JDT生成的类文件替换为相应的类文件。每次JDT构建完成后,这都是在ASM的帮助下在单独的构建过程中完成的(该插件提供了Eclipse构建器)。

现在,所有这一切都运行良好但我遇到了以下问题:当我尝试引用字段时,JDT编辑器无法看到添加的字段并显示SOME_FIELD cannot be resolved or is not a field错误,例如:

public class Main{
    public static void main(String[] args) {
        System.out.println(TestClass.SOME_FIELD);
    }
}

此错误仅在JDT编辑器中报告,但不在编译器中报告。因此,源文件本身不会显示任何错误,并且运行上述main方法也可以正常运行而没有任何错误。

有没有办法让JDT编辑器看到这些已更改的类文件,或者在编译后是否存在更改类文件的其他解决方法?


如果您想自己重现问题,可以执行以下操作:

  1. 使用上面显示的已修改 TestClass.java类创建Java项目。
  2. 编译项​​目并将TestClass.class文件保存在其他位置
  3. TestClass.java中删除静态字段并清理项目
  4. TestClass.class文件替换为修改后的版本
  5. Main.java课程添加到您的项目
  6. 您应该只在编辑器中看到错误,而不是在java文件
  7. 上看到错误
  8. 运行Main类 - 应该可以正常运行而不会出现任何错误

0 个答案:

没有答案