Java 用Jena加载owl文件

Java 用Jena加载owl文件,java,jena,owl,ontology,Java,Jena,Owl,Ontology,我用Jena作为OntModel加载了几个OWL文件(RDF/XML序列化)。 对于某些文件,使用ontoModel.read()读取时会出现错误: 线程“main”java.lang.NoClassDefFoundError中的异常:org/apache/http/HttpMessage 我在类路径中有org.apache.httpcore sources.jar 当前出现问题的文件是: 我用Protege将它保存为RDF/XML,尝试使用扩展名.owl和.RDF 守则: public sta

我用Jena作为
OntModel
加载了几个OWL文件(RDF/XML序列化)。 对于某些文件,使用
ontoModel.read()
读取时会出现错误:

线程“main”java.lang.NoClassDefFoundError中的异常:org/apache/http/HttpMessage

我在类路径中有
org.apache.httpcore sources.jar

当前出现问题的文件是:

我用Protege将它保存为RDF/XML,尝试使用扩展名
.owl
.RDF

守则:

public static OntModel getOntologyModel(String ontoFile)
{   
    OntModel ontoModel = ModelFactory.createOntologyModel(OntModelSpec.OWL_MEM, null);
    try 
    {
        InputStream in = FileManager.get().open(ontoFile);
        try 
        {
            ontoModel.read(in, null);
        } 
        catch (Exception e) 
        {
            e.printStackTrace();
        }
        LOGGER.info("Ontology " + ontoFile + " loaded.");
    } 
    catch (JenaException je) 
    {
        System.err.println("ERROR" + je.getMessage());
        je.printStackTrace();
        System.exit(0);
    }
    return ontoModel;
}

非常感谢您的帮助。

如果您使用的是二进制下载,请将所有JAR放在类路径的lib/目录中。org.apache.httpcore-sources.jar不是合适的jar。。您似乎至少缺少httpclient-4.2.6.jar和httpcore-4.2.5.jar

如果使用maven,请使用工件:

<dependency>
 <groupId>org.apache.jena</groupId>
 <artifactId>apache-jena-libs</artifactId>
 <type>pom</type>
 <version>X.Y.Z</version>
</dependency> 

org.apache.jena
ApacheJenaLibs
聚甲醛
X.Y.Z

要获得相同的集合,但由maven或您正在使用的任何builer管理。

请插入项目结构,lib folderI可以用代码加载您的文件。确保传递的owl文件的名称正确。代码是正确的,谢谢。我进行了三次检查,文件名正确且文件存在。错误实际上来自
org.apache.jena.riot.system.stream.LocatorHTTP.performOpen(LocatorHTTP.java:41)
。我还尝试将基名称作为read方法的arg,但对同一个文件有相同的错误。在某个地方可能是一个愚蠢的错误,但我没有发现它。链接的文件已经导入到其他本体中——其中一个可能是问题所在。我会尝试加载每一个,看看是否有有用的东西出现。谢谢,你是对的,这可能会导致导入。实际上有一个进口链;其他文件也会带来问题,这使得整个文件相当麻烦。我想我将只是硬编码我的初始文件的几个类…你好,谢谢,就是这样!只是缺少处理导入的好库。现在它起作用了:)