我正在将使用Jena 2.6.4的现有OSGi项目转换为另一个框架(从Eclipse Equinox到Apache Felix与BndTools的组合)。关于Equinox的旧项目工作得很好,但是,我在新框架中遇到了一些麻烦。 为了将Jena库包含到我的项目中,我创建了一个新的“从现有JAR归档插件”。我将它导出到可部署的插件并将其放入我的本地存储库。从那里我可以将它添加到我的项目的构建路径。它似乎运作良好。它可以被编译,但是当我启动项目时,第一次访问Jena(createResource)时,org.xml.sax.SAXException上出现NoClassDefFoundException。 为了解决这个问题,我决定将Jena库升级到2.7(从a here)。所以我做了与上面完全相同的步骤。该项目再次可以进一步编译和运行。现在,createResource调用没有崩溃并且工作得很好。但是,该项目在执行SPARQL-Query时崩溃。以下是堆栈跟踪的摘录:在OSGi中使用Jena - javax/management/malformedObjectNameException中的NoClassDefFoundException
java.lang.NoClassDefFoundError: javax/management/MalformedObjectNameException
at com.hp.hpl.jena.query.ARQ.init(ARQ.java:437)
at com.hp.hpl.jena.query.ARQ.<clinit>(ARQ.java:456)
at com.hp.hpl.jena.query.Query.<clinit>(Query.java:62)
at com.hp.hpl.jena.query.QueryFactory.create(QueryFactory.java:80)
at com.hp.hpl.jena.query.QueryFactory.create(QueryFactory.java:52)
at com.hp.hpl.jena.query.QueryFactory.create(QueryFactory.java:40)
at com.hp.hpl.jena.query.QueryExecutionFactory.makeQuery(QueryExecutionFactory.java:517)
at com.hp.hpl.jena.query.QueryExecutionFactory.create(QueryExecutionFactory.java:193)
而且,实际上,我无法在Jena库中找到此异常的定义。我错过了什么?还是有其他想法,该如何解决?
尼科
我可以通过修改Jena的OSGi包装项目来解决问题。当javax.management包作为依赖项添加时,那么一切运行良好。 – 2012-02-18 14:35:37