簡體   English   中英

與Pellet一起使用Jena; NoClassDefFoundError異常

[英]Using Jena with Pellet; NoClassDefFoundError Exception

我正在嘗試將Jena 2.12.1與Pellet一起使用; 我從其站點Jena 2.12.1下載了最新的Apache Jena庫。

首先,我下載了Pellet 2.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 );
}   
}

問題是什么? 有沒有更好的方法在Pellet(任何版本)中使用jena 2.12.1?

錯誤消息說,從org.mindswap.pellet.jena.PelletReasoner.bind org.mindswap.pellet.utils.progress.ProgressMonitor時找不到org.mindswap.pellet.jena.PelletReasoner.bind 看起來classpath沒有所有必需的Pellet罐子。 與耶拿無關。

但是,請參見http://clarkparsia.com/pellet/faq/different-jena-version/ 由於存在2年以上的差距,Pellet不太可能與Jena 2.12.1完美配合。

您可能希望嘗試使用此fork或其分支之一: https : //github.com/ansell/pellet (兩種方式均不建議)

您提供給Jena的鏈接不是主站點,它看起來像http://www.apache.org/dist/jena的鏡像。

如果有人遇到此問題並希望與Pellet一起使用Jena 2.13 ,則自20157月14日起可以使用Pellet 2.4 參見commit #7b07bf

開始安裝並運行它,只需克隆它們的repo並運行mvn compile自己構建JAR。 它們還包括使用Jena 2.13 的示例

要將Pellet與Jena一起使用,請按照其常見問題解答中的說明進行操作:

// 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 );

使用包括JENA兼容庫的顆粒2.3.0(2011年8月22日)代替顆粒2.3.1已解決了該問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM