2012-07-09 45 views
3

我刚刚从Equinox迁移到Apache Felix。现在有根据javax.sql.DataSource类缺失:Apache Felix未命中javax.sql.Datasource

清单文件
java.lang.NoClassDefFoundError: javax/sql/DataSource 

我的包是进口javax.sql中,我尝试添加以下行到菲利克斯配置:

org.osgi.framework.system.packages.extra=javax.sql 

有没有什么方法可以教felix导出包,还是有捆绑包吗?即使没有清单中的import语句,它在Equinox中也能正常工作。

编辑: 清单文件:

Manifest-Version: 1.0 
Bundle-ManifestVersion: 2 
Bundle-Name: Database 
Bundle-SymbolicName: ...database 
Bundle-Version: 1.0.0 
Import-Package: javax.sql, 
org.osgi.framework;version="1.3.0", 
org.osgi.service.component;version="1.1.0" 
Bundle-RequiredExecutionEnvironment: JavaSE-1.6 
Bundle-ClassPath: lib/mysql-connector-java-5.1.20-bin.jar, 
. 
Export-Package: ...database.model, 
...database.service 
Service-Component: OSGI-INF/component.xml 

感谢, 丹尼尔

回答

3

菲利克斯也已经导出此包。

更可能是您的Import-Package声明可能有问题。您确实声明您的包导入了包,但请张贴MANIFEST.MF的副本以确保。

+0

我把清单文件放在问题中。 – dbrettschneider 2012-07-09 11:25:50

+0

那么*看起来很好。这个异常是否可能被这个不同的bundle引发?你看,如果Felix没有导出包(如你原来的问题所建议的那样),那么你会得到一种不同的错误,即解决错误。你永远不应该在OSGi中得到NoClassDefFoundError。 – 2012-07-09 11:32:37

+0

原来,我不得不在我的包中导入javax.sql和javax.naming。 – dbrettschneider 2012-07-09 11:35:53