使用注释(org.eclipse.jdt.annotation.Nullable)使用Eclipse编译,而不是使用javac编译

时间:2017-07-19 12:00:18

标签: java annotations javac nullable eclipse-jdt

以下代码使用Eclipse编译:

# Parse out the data and write back to file
for line in data:
    f.write(' '.join(map(str, line)) + "\n")

但它与Oracle的javac(版本1.8.0_141)没有关系,会产生以下错误:

@Retention(RetentionPolicy.CLASS)
@Target({ TYPE_USE })
public @interface Nullable {
    // This is org.eclipse.jdt.annotation.Nullable
}

class SomeClass {

    private final SomeOtherClass.@Nullable Inner b;

}

我敢打赌,javac和Eclipse的编译器在处理TYPE_USE方面有所不同,但我找不到一种解决方法,以便在我的代码中保留注释(应该在Eclipse和javac中编译)。关于此事的任何线索?

1 个答案:

答案 0 :(得分:0)

感谢Stephan Herrmann,我发现了这个问题。 javac构建使用了我们的META-INF / MANIFEST.MF文件中声明的org.eclipse.jdt.annotation版本:1.1.0。但是这个版本是错误的,并且在使用Eclipse的编译器时没有捕获,因为代码是针对版本2.0.0(Eclipse Luna中的jdt附带)编译的。为javac构建指定版本2.0.0解决了这个问题。