2013-12-11 284 views
1

我正在嘗試在OSGi中使用的示例,但我在啓動激活器時遇到了一個奇怪的問題。Missing Constraint:Import-Package:無法啓動激活器

當我啓動激活器時彈出一個驗證對話框,並說上述錯誤。我已經導入了這些軟件包,並且第一次看到這個問題。

enter image description here

我有以下激活類:

package org.aricent.jpaosgi; 

public class Activator implements BundleActivator { 

/* 
* (non-Javadoc) 
* @see org.osgi.framework.BundleActivator#start(org.osgi.framework.BundleContext) 
*/ 
public void start(BundleContext context) throws Exception { 
    System.out.println("Hello World!!"); 

    try { 
     EntityManagerFactory emf = Persistence 
       .createEntityManagerFactory("todos"); 
     EntityManager em = emf.createEntityManager(); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 

/* 
* (non-Javadoc) 
* @see org.osgi.framework.BundleActivator#stop(org.osgi.framework.BundleContext) 
*/ 
public void stop(BundleContext context) throws Exception { 
    System.out.println("Goodbye World!!"); 
} 

}

MANIFEST.MF

Manifest-Version: 1.0 
Bundle-ManifestVersion: 2 
META-persistence: META-INF/persistence.xml 
JPA-PersistenceUnits: todos 
Bundle-Name: JpaOsgi 
Bundle-SymbolicName: org.aricent.jpaOsgi 
Bundle-Version: 1.0.0.qualifier 
Bundle-Activator: org.aricent.jpaosgi.Activator 
Bundle-RequiredExecutionEnvironment: JavaSE-1.6 
Import-Package: javax.persistence;version="2.1.0", 
       org.osgi.framework;version="1.3.0" 
Bundle-ActivationPolicy: lazy 

周的persistence.xml

<?xml version="1.0" encoding="UTF-8" ?> 
<persistence xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd" 
    version="2.0" xmlns="http://java.sun.com/xml/ns/persistence"> 
    <persistence-unit name="todos" transaction-type="RESOURCE_LOCAL"> 
    <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider> 
<class>myJPAProject.Todo</class> 
<properties> 
    <property name="javax.persistence.jdbc.driver" value="org.apache.derby.jdbc.EmbeddedDriver" /> 
    <property name="javax.persistence.jdbc.url" 
    value="jdbc:derby:/home/vogella/databases/simpleDb;create=true" /> 
    <property name="javax.persistence.jdbc.user" value="test" /> 
    <property name="javax.persistence.jdbc.password" value="test" /> 

    <!-- EclipseLink should create the database schema automatically --> 
    <property name="eclipselink.ddl-generation" value="create-tables" /> 
    <property name="eclipselink.ddl-generation.output-mode" 
    value="database" /> 
</properties> 

誰能plz幫助我在這裏。謝謝。

回答

3

這不是一個「奇怪的問題」。

您已導入這些包但未提供導出它們的包。所有導入的包都必須通過相應的導出來匹配,或者從另一個包或基礎框架/運行時(「系統包」)導出。

確保您的運行配置包含導出所需軟件包的軟件包。

1

由於您沒有任何編譯時錯誤,因此您的運行配置是此處的問題。您需要將提供缺少軟件包的軟件包添加到您在運行時包含的軟件包中。