java - 错误:org.osgi. util.tracker.ServiceTracker 不接受参数

  显示原文与译文双语对照的内容

我有一个OSGi项目,我正在使用 Maven 。 我需要导入 org.osgi. 。tracker 。ServiceTracker,并创建一个属性:


...
import org.osgi.util.tracker.ServiceTracker;
...

private ServiceTracker<Object, Object> serviceTracker;

我的依赖关系中显然有 org.eclipse.osgi,如下( 我的pom.xml 部分) 所示。


<dependencies>
 <dependency>
 <groupId>org.eclipse</groupId>
 <artifactId>org.eclipse.osgi</artifactId>
 <version>3.8.0.v20120529-1548</version>
 <scope>provided</scope>
 </dependency>
</dependencies>

在 Eclipse 中,我可以找到类的定义。


public class ServiceTracker<S, T> implements 
 ServiceTrackerCustomizer<S, T> 
{
. . .
}

但是,当我使用 Maven 命令编译项目时:

 
mvn clean install

 

我得到了错误:


Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile (default-compile) on project <my project name>: Compilation failure: Compilation failure:
[ERROR] <link to my source code dir>/Activator.java:[75,27] type 
org.osgi.util.tracker.ServiceTracker does not take parameters

发生了什么?

时间: 作者:

我怀疑你正在用 Java 7编译代码。 OSGi发行的类文件用无文档的-target jsr14 标志编译。 Javac 7拒绝识别那些类文件中的通用签名。 请参见 http://blog.osgi.org/2012/10/43-companion-code-for-java-7.html

另外,你不应该针对Equinox实现进行编译,而是针对OSGi附带代码 jars 进行编译。 你需要版本 4.3.1或者更高版本。 请参见 http://search.maven.org/#artifactdetails|org.osgi|org.osgi.core|4.3.1|jar

作者:
...