我不明白发生了什么,但我正在使用的最新 OSGI 库有关于服务定义等的泛型信息。当我针对这个库编写源代码时,我的 IDE 会正确解释泛型信息并让我编写代码。
但是当它去用javac编译代码时,会出现“类型ServiceFactory不带参数”的编译错误。使用 Eclipse 编译器不会出现此错误(但 IDEA 11 中的 Eclipse 编译器似乎不喜欢新的 JDK 7 语言结构,如“new HashMap<>()”,所以我不能真正使用它作为替代)。
当我第一次研究这个问题时,我在某处读到,OSGI 二进制 jar 存在问题,因为类文件是为 JDK 1.4 二进制兼容性而编译的,并且干扰了编译器加载时保留的泛型信息班上。我不记得这是否正确,因为当我去寻找它时,我再也找不到那个网页了。
那么这里有什么问题呢?为什么 javac 看不到 OSGI 4.x 类的泛型信息,所以我可以在 OSGI 应用程序中使用泛型?