执行OWL API时出错

我正在尝试执行以下代码。

import java.io.File; import org.semanticweb.owlapi.apibinding.OWLManager; import org.semanticweb.owlapi.model.AddAxiom; import org.semanticweb.owlapi.model.IRI; import org.semanticweb.owlapi.model.OWLAxiom; import org.semanticweb.owlapi.model.OWLClass; import org.semanticweb.owlapi.model.OWLDataFactory; import org.semanticweb.owlapi.model.OWLOntology; import org.semanticweb.owlapi.model.OWLOntologyCreationException; import org.semanticweb.owlapi.model.OWLOntologyManager; public class Snippet { public static void main(String[] args) throws OWLOntologyCreationException { File file = new File( "file:///c/Users/DTN/Desktop/Final SubmissionFilteringMechanism_Ontology.owl"); OWLOntologyManager m = OWLManager.createOWLOntologyManager(); OWLDataFactory f = OWLManager.getOWLDataFactory(); OWLOntology o; o = m.loadOntologyFromOntologyDocument(file); OWLClass clsA = f.getOWLClass(IRI.create("urn:test#ClassA")); OWLClass clsB = f.getOWLClass(IRI.create("urn:test#ClassB")); OWLAxiom ax1 = f.getOWLSubClassOfAxiom(clsA, clsB); AddAxiom addAxiom1 = new AddAxiom(o, ax1); m.applyChange(addAxiom1); for (OWLClass cls : o.getClassesInSignature()) { System.out.println(cls.getIRI()); } m.removeOntology(o); } } 

它产生以下错误。

线程“main”中的exceptionjava.lang.NoClassDefFoundError:com / google / inject / Provider,位于java.security.SecureClassLoader的java.lang.ClassLoader.defineClass(未知源)的java.lang.ClassLoader.defineClass1(本地方法)中。 java.net.URLClassLoader.access上的java.net.URLClassLoader.defineClass(未知来源)中的defineClass(未知来源)java.net.URLClassLoader上的java.net.URLClassLoader $ 1.run(未知来源)$ 100(未知来源)$ 1 .run(未知来源)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 java.security.ClassLoader.defineClass上的java.lang.ClassLoader.defineClass1(本地方法)java.security.ClassLoader.defineClass(未知来源)java.security.ClassLoader.defineClass上的.loadClass(未知来源) java.net.URLClassLoader.access上的java.net.URLClassLoader.defineClass(未知来源)中的(未知来源)$ 1 java.net.URLClassLoader上的java.net.URLClassLoader $ 1.run(未知来源)中的00(未知来源)java.net.URLClassLoader上的java.security.AccessController.doPrivileged(本地方法)中的java 1.run(未知来源)。在java.lang.ClassLoader.loadClass(未知来源)的findClass(未知来源),位于test.main的java.lang.ClassLoader.loadClass(未知来源)的sun.misc.Launcher $ AppClassLoader.loadClass(未知来源)(测试。 java:18)引起:java.lang.ClassNotFoundException:com.google.inject.Provider at java.net.URLClassLoader.findClass(Unknown Source)at java.lang.ClassLoader.loadClass(Unknown Source)at sun.misc.Launcher java.lang.ClassLoader.loadClass上的$ AppClassLoader.loadClass(未知来源)(未知来源)… 25更多

请一些人帮帮我。 提前致谢。

你在课堂上包括哪些jar子?

看起来你错过了一些google guice依赖项。 我建议使用一些依赖管理工具,如maven或gradle

例如,我通过使用maven依赖来解决这个问题

net.sourceforge.owlapi:owlapi-osgidistribution:4.0.2

在您的Snippet类作为主类的maven项目中。

  4.0.0 fake fake 0.0.1-SNAPSHOT  src   maven-compiler-plugin 3.1  1.6 1.6       net.sourceforge.owlapi owlapi-osgidistribution 4.0.2   

如果要在不使用依赖关系管理器的情况下运行它,请确保在类路径中包含以下jar(使用maven依赖关系树命令获取以下列表)

 [INFO] \- net.sourceforge.owlapi:owlapi-osgidistribution:jar:4.0.2:compile [INFO] +- org.openrdf.sesame:sesame-model:jar:2.7.12:compile [INFO] | \- org.openrdf.sesame:sesame-util:jar:2.7.12:compile [INFO] +- org.openrdf.sesame:sesame-rio-api:jar:2.7.12:compile [INFO] +- org.openrdf.sesame:sesame-rio-languages:jar:2.7.12:compile [INFO] +- org.openrdf.sesame:sesame-rio-datatypes:jar:2.7.12:compile [INFO] +- org.openrdf.sesame:sesame-rio-binary:jar:2.7.12:compile [INFO] +- org.openrdf.sesame:sesame-rio-n3:jar:2.7.12:compile [INFO] +- org.openrdf.sesame:sesame-rio-nquads:jar:2.7.12:compile [INFO] | \- commons-io:commons-io:jar:2.4:compile [INFO] +- org.openrdf.sesame:sesame-rio-ntriples:jar:2.7.12:compile [INFO] +- org.openrdf.sesame:sesame-rio-rdfjson:jar:2.7.12:compile [INFO] | \- com.fasterxml.jackson.core:jackson-core:jar:2.2.1:compile [INFO] +- org.openrdf.sesame:sesame-rio-rdfxml:jar:2.7.12:compile [INFO] +- org.openrdf.sesame:sesame-rio-trix:jar:2.7.12:compile [INFO] +- org.openrdf.sesame:sesame-rio-turtle:jar:2.7.12:compile [INFO] +- org.openrdf.sesame:sesame-rio-trig:jar:2.7.12:compile [INFO] +- com.github.jsonld-java:jsonld-java-sesame:jar:0.5.0:compile [INFO] | \- com.github.jsonld-java:jsonld-java:jar:0.5.0:compile [INFO] | +- com.fasterxml.jackson.core:jackson-databind:jar:2.3.3:compile [INFO] | | \- com.fasterxml.jackson.core:jackson-annotations:jar:2.3.0:compile [INFO] | +- org.apache.httpcomponents:httpclient-cache:jar:4.2.5:compile [INFO] | +- org.apache.httpcomponents:httpclient:jar:4.2.5:compile [INFO] | | +- org.apache.httpcomponents:httpcore:jar:4.2.4:compile [INFO] | | \- commons-codec:commons-codec:jar:1.6:compile [INFO] | \- org.slf4j:jcl-over-slf4j:jar:1.7.7:runtime [INFO] +- org.semarglproject:semargl-sesame:jar:0.6.1:compile [INFO] | +- org.semarglproject:semargl-core:jar:0.6.1:compile [INFO] | \- org.semarglproject:semargl-rdfa:jar:0.6.1:compile [INFO] | \- org.semarglproject:semargl-rdf:jar:0.6.1:compile [INFO] +- com.google.guava:guava:jar:18.0:compile [INFO] +- com.google.inject:guice:jar:4.0-beta:compile [INFO] | +- javax.inject:javax.inject:jar:1:compile [INFO] | \- aopalliance:aopalliance:jar:1.0:compile [INFO] +- com.google.inject.extensions:guice-multibindings:jar:4.0-beta:compile [INFO] +- com.google.code.findbugs:jsr305:jar:2.0.1:compile [INFO] +- org.slf4j:slf4j-api:jar:1.7.7:compile [INFO] +- org.apache.directory.studio:org.apache.commons.io:jar:2.4:compile [INFO] \- net.sf.trove4j:trove4j:jar:3.0.3:compile 

这是一个.zip文件,包含OWLAPI 4.0.2的所有必需依赖项。 您只需将其解压缩并在项目中包含所有这些.jar文件即可。

从以下url下载.zip: https : //www.dropbox.com/s/835qjm1xrhefy6s/Dependencias%20extras.rar? dl = 0

最好的祝福。