2014-10-21 1 views
1

OSGi 프로젝트가 있고 Maven을 사용하고 있습니다. 내 치어의 아래 (일부 표시로오류 : org.osgi.util.tracker.ServiceTracker가 매개 변수를 사용하지 않습니다.

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

private ServiceTracker<Object, Object> serviceTracker; 

내가 분명히 org.eclipse.osgi이 내 종속의 : 번들에서 나는 org.osgi.util.tracker.ServiceTracker를 가져오고 속성을 작성해야합니다. 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> 
{ 
    ... 
} 

그러나, 나는 받는다는 명령에 의해 내 프로젝트를 컴파일 할 때 :

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 

도대체 무슨 일이 일어나고 무엇 :

mvn clean install 

내가 오류가 발생했습니다?

+0

POM 또는 상위 POM에 다른 종속성이 있습니까? 그것은 어딘가에서 ServiceTracker 클래스의 이전 버전을 선택하는 것으로 보입니다. –

+0

또는 상위 pom에서 종속성 (관리되지는 않지만 직접 종속성). Btw : 당신은 org.osgi.core와 org.osgi.compendium 의존성을 스펙을 구현하는 이슈 대신에 "제공된"범위를 가진 컴파일을 위해 사용해야한다. –

+0

@NickWilson : 처음에는 나도 그렇게 생각 했으므로 별도로 컴파일하려고했습니다. 새로운 독립 실행 형 프로젝트를 만들고 종속성 및 속성 만 선언하고 프로젝트를 컴파일합니다. 그러나 오류는 여전히 존재합니다. – vad

답변

2

Java 7로 코드를 컴파일하는 것으로 의심됩니다. OSGi는 문서화되지 않은 -target jsr14 플래그로 컴파일 된 클래스 파일을 출시했습니다. Javac 7은 이러한 클래스 파일에서 일반 서명을 인식하지 않습니다. http://blog.osgi.org/2012/10/43-companion-code-for-java-7.html을 참조하십시오.

또한 Equinox 구현에 대해 컴파일하지 말고 대신 OSGi 컴패니언 코드 jar에 대해 컴파일해야합니다. 버전 4.3.1 이상이 필요합니다. http://search.maven.org/#artifactdetails|org.osgi|osgi.core|4.3.1|jar을 참조하십시오.

+1

감사합니다. 내 자바 다시 1.6_u45로 다운 그레이드하고 지금은 매력처럼 작동합니다. – vad

+0

블로그 팁에 대한 도움말과 링크는 정말 도움이되었습니다. – 0xAffe

관련 문제