使用耶拿与佩莱;NoClassDefFoundError异常



我正在尝试将耶拿2.12.1与佩莱一起使用;我从他们的网站Jena 2.12.1下载了最新的Apache Jena库。

首先,我下载了Pellet2.3.1并导入了JENA库。不幸的是,org.mindswap.pellet.jena.PelletReasonerFactory无法解析,因此,我无法实例化推理器。

然后,我下载了多个版本的jar文件pellet-jena-2.3.2(尝试了2.3.1和2.3.0)。这解决了org.mindswap.pellet.jena.PelletReasonerFactory。然而,它引起了异常:

Exception in thread "main" java.lang.NoClassDefFoundError: org/mindswap/pellet/utils/progress/ProgressMonitor
at org.mindswap.pellet.jena.PelletReasoner.bind(PelletReasoner.java:95)
at org.mindswap.pellet.jena.PelletReasoner.bind(PelletReasoner.java:53)
at com.hp.hpl.jena.rdf.model.ModelFactory.createInfModel(ModelFactory.java:261)
at code.BasicOWLHandler.main(BasicOWLHandler.java:678)
Caused by: java.lang.ClassNotFoundException: org.mindswap.pellet.utils.progress.ProgressMonitor

at java.net.URLClassLoader$1.run(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
... 4 more

我的代码:

import org.mindswap.pellet.jena.PelletReasonerFactory;
import com.hp.hpl.jena.rdf.model.InfModel;
import com.hp.hpl.jena.rdf.model.Model;
import com.hp.hpl.jena.rdf.model.ModelFactory;
import com.hp.hpl.jena.reasoner.Reasoner;
public class Test {
public static void main (String [] args)
{
    Reasoner reasoner = PelletReasonerFactory.theInstance().create();
    // create an empty model
    Model emptyModel = ModelFactory.createDefaultModel( );
    // create an inferencing model using Pellet reasoner
    InfModel model = ModelFactory.createInfModel( reasoner, emptyModel );
}   
}

问题出在哪里?有没有更好的方法使用jena 2.12.1与佩莱(任何版本)

org.mindswap.pellet.jena.PelletReasoner.bind调用时,错误消息表示找不到org.mindswap.pellet.utils.progress.ProgressMonitor。这看起来类路径没有所有必要的Pelletjar。这与耶娜无关。

但是,请参见http://clarkparsia.com/pellet/faq/different-jena-version/.佩莱不太可能与耶拿2.12.1完美合作,因为两年多的差距。

你可能想试试这个叉子或它的一个分支:https://github.com/ansell/pellet(没有任何建议)

你给耶娜的链接不是主网站,它看起来像是http://www.apache.org/dist/jena.

如果有人遇到这个问题,并想将Jena2.13与Pellet一起使用,那么自2015年7月14日起,使用Pellet2.4是可能的。请参阅提交#7b07bf。

启动并运行它,您只需要通过克隆它们的repo并运行mvn compile来自己构建JAR。它们还包括一个使用Jena 2.13的示例。

要使用佩莱与耶拿简单遵循他们的常见问题解答上的说明:

// ontology that will be used
String ont = "http://www.mindswap.org/2004/owl/mindswappers";
// create an empty ontology model using Pellet spec
OntModel model = ModelFactory.createOntologyModel( PelletReasonerFactory.THE_SPEC );   
// read the file
model.read( ont );

使用pellet-2.3.0(2011年8月22日),包括与JENA兼容的库,而不是pellet--2.3.1,已经解决了这个问题。

相关内容

  • 没有找到相关文章

最新更新