java - 使用 java 7 编译 Equinox 3.8.2 项目

标签 java eclipse gradle osgi equinox

我需要使用 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/

相关文章:

gradle - 如何在外部构建脚本中添加对任务的preBuild依赖关系?

java - 如何打印我的 Java 对象而不得到 "SomeType@2f92e0f4"?

eclipse - 为什么eclipse总是报错tomcat服务器端口正在使用?

eclipse - 使用 eGit (Eclipse) 删除未跟踪的文件

java - 安卓工作室 : Could not get unknown property 'kotlin_version'

Android Studio - 向所有模块添加 SDK 版本和依赖项

java - Intellij 上的 Golang 插件

java - 计算单词内的音节

java - recyclerview.adapter 重置单选按钮

java - 在 Eclipse Kepler 上安装了 Nodeclipse,无法关闭 Java 拼写检查