Java 使用Jena和颗粒;NoClassDefFoundError异常

Java 使用Jena和颗粒;NoClassDefFoundError异常,java,jena,pellet,Java,Jena,Pellet,我正在尝试将Jena 2.12.1与Pellet一起使用;我从他们的网站下载了最新的ApacheJena库 首先,我下载并导入了JENA库。不幸的是,org.mindswap.pellet.jena.PelletReasonerFactory无法解析,因此,我无法实例化推理机 然后,我下载了多个版本的jar文件pellet-jena-2.3.2(尝试了2.3.1和2.3.0)。这解决了org.mindswap.pellet.jena.PelletReasonerFactory。然而,它导致了例外

我正在尝试将Jena 2.12.1与Pellet一起使用;我从他们的网站下载了最新的ApacheJena库

首先,我下载并导入了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与Pellet(任何版本)一起使用?

org.mindswap.Pellet.utils.progress.ProgressMonitor调用时,错误消息说找不到
org.mindswap.Pellet.jena.PelletReasoner.bind
。看起来类路径没有所有必要的颗粒罐。这与耶拿无关

但是,请参见。 由于2年以上的差距,Pellet不太可能与Jena 2.12.1完美配合

您可能希望尝试此fork或其分支之一:(两种方式均无推荐)


你给Jena的链接不是主站点-它看起来像一个镜子。

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

如果有人遇到这个问题,想将Jena2.13与pellet一起使用,从7月14日起就有可能了,2015年使用小球2.4。见提交

启动并运行您只需克隆JAR的repo并运行
mvn compile
即可自己构建JAR。它们还包括使用Jena 2.13

要与Jena simple一起使用Pellet,请按照以下说明操作:

//将使用的本体
字符串ont=”http://www.mindswap.org/2004/owl/mindswappers";
//使用Pellet spec创建一个空的本体模型
OntModel model=ModelFactory.createOntologyModel(PelletReasonerFactory.THE_规范);
//读文件
模型读取(ont);

我检查了您提供的第一个链接;他们说,每个颗粒分布包含一个兼容的耶拿版本。我下载并包括了[Pellet 2.3.1](),其中也包括JENA 2.10;然而,我仍然有一个未解决的导入
org.mindswap.pellet.jena.PelletReasonerFactory
。这个导入可以在pellet jena jar文件中解决,我想知道为什么它没有包含在pellet发行版中;因此,我必须从外部链接导入它,这导致了上述异常。然而,我认为这不是解决问题的最好办法。