2013-12-11 62 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

由于您没有任何编译时错误,因此您的运行配置是此处的问题。您需要将提供缺少软件包的软件包添加到您在运行时包含的软件包中。