2012-06-06 11 views
8

estoy tratando de compilar mi paquete OSGi contra la especificación OSGi 4.3 utilizando OpenJDK7 pero estoy consiguiendo el error:¿Cómo compilar el paquete maquetado OSGi 4.3 con OpenJDK 7?

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:2.5:compile (default-compile) on project example: Compilation failure 
[ERROR] /tmp/baka/example/src/main/java/org/example/Activator.java:[14,24] error: type ServiceReference does not take parameters 

aquí es mi Activator.java:

package org.example; 

import org.osgi.framework.BundleActivator; 
import org.osgi.framework.BundleContext; 
import org.osgi.framework.ServiceReference; 

public class Activator implements BundleActivator { 
    @Override 
    public void start(BundleContext bundleContext) throws Exception { 
     ServiceReference<Runnable> ref = bundleContext.getServiceReference(Runnable.class); 
    } 

    @Override 
    public void stop(BundleContext bundleContext) throws Exception { 
    } 
} 

y mi pom.xml:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 

    <groupId>org.example</groupId> 
    <artifactId>example</artifactId> 
    <version>1.0-SNAPSHOT</version> 
    <packaging>bundle</packaging> 

    <name>example</name> 
    <url>http://maven.apache.org</url> 

    <properties> 
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
    </properties> 

    <dependencies> 
     <dependency> 
      <groupId>org.osgi</groupId> 
      <artifactId>org.osgi.core</artifactId> 
      <version>4.3.0</version> 
     </dependency> 
    </dependencies> 


    <build> 
     <plugins> 
      <plugin> 
       <groupId>org.apache.felix</groupId> 
       <artifactId>maven-bundle-plugin</artifactId> 
       <version>2.3.7</version> 
       <extensions>true</extensions> 
       <configuration> 
        <instructions> 
         <Private-Package>org.example</Private-Package> 
         <Bundle-Activator>org.example.Activator</Bundle-Activator> 
        </instructions> 
       </configuration> 
      </plugin> 
     </plugins> 
    </build> 

</project> 

Este error no aparece cuando uso OpenJDK 6. ¿Alguna pista sobre cómo hacerlo funcionar con OpenJDK 7?

Respuesta

11

Necesita recompilar el código fuente de OSGi con javac de Java 7. OSGi compiló el código con Java 6 javac utilizando -target jsr14. Java 7 javac eliminó el soporte para compilar contra tales archivos de clase: http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=7078419

Comenzando con R5, OSGi ya no enviará -target jsr14 archivos de clase.

[Actualización 31 de Oct de 2012]

OSGi ahora ha proporcionado recompiladas 4.3 archivos JAR para Java 7. Ver http://blog.osgi.org/2012/10/43-companion-code-for-java-7.html

Cuestiones relacionadas