我需要使用 Equinox 3.8.2 为多个 OSGi 项目创建一个 gradle 构建系统。我们使用 Java 7。
但是现在我的 Gradle 脚本在使用 ServiceTracker 编译项目时失败了:
Activator.java:11: error: type ServiceTracker does not take parameters
private static ServiceTracker<org.osgi.service.log.LogService, Object> logTracker = null;
我已经找到this博客文章。
但不知何故,当使用相同的 osgi 3.8.2 库手动构建项目时,Eclipse 成功了。
最佳答案
Eclipse 使用 Eclipse Compiler for Java (ECJ) 进行编译。与 javac 7 不同,它很乐意使用 OSGi 4.3.0 jar 中的 -target jsr14
类文件中的通用签名信息。 javac 7 明确选择忽略 -target jsr14
类文件中的通用信息,这就是您收到该错误的原因。如果您想使用 javac 7 进行编译,则需要使用已编译为 -target 1.5
的 OSGi 4.3.1 库。
关于java - 使用 java 7 编译 Equinox 3.8.2 项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34001796/