2012-06-06 28 views
8

मैं OpenJDK7 का उपयोग कर OSGi विनिर्देश 4.3 के खिलाफ मेरी OSGi बंडल संकलित करने के लिए कोशिश कर रहा हूँ, लेकिन मैं त्रुटि हो रही है:ओपनजेडीके 7 के साथ मैवेनाइज्ड ओएसजीआई 4.3 बंडल को कैसे संकलित करें?

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 { 
    } 
} 

और मेरे pom.xml:

[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 
यहाँ

मेरी Activator.java है

<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> 

यह त्रुटि तब प्रकट नहीं होती है जब मैं OpenJDK 6 का उपयोग कर रहा हूं। कोई संकेत यह है कि इसे OpenJDK 7 के साथ कैसे काम करना है?

उत्तर

11

आपको जावा 7 से जावैक के साथ ओएसजीआई स्रोत कोड को फिर से कंपाइल करने की आवश्यकता है। ओएसजीआई ने जावा 6 जावा के साथ कोड को संकलित किया- लक्ष्य jsr14। जावा 7 जावा ने इस तरह की क्लास फाइलों के खिलाफ संकलन के लिए समर्थन हटा दिया: http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=7078419

आर 5 से शुरू होने पर, ओएसजीआई अब jsr14 क्लास फ़ाइलों को लक्षित नहीं करेगा।

[अपडेट किया गया 31 अक्टू 2012]

OSGi अब प्रदान की गई है जावा 7. के लिए कंपाइल 4.3 जार फाइलें देखें http://blog.osgi.org/2012/10/43-companion-code-for-java-7.html