2016-08-01 50 views
0

此程序的目标是通过java运行Sparql查询并获取控制台中的相应结果。尝试在java中为Dbpedia运行sparql查询时发生NoClassDefFoundError。 (org/slf4j/LoggerFactor)

如果我没有错,错误是由于缺少jar文件。但是,在我看来,所需的jar文件已被添加。 我已经添加了以下jar文件:Jena-2.1.jararq-2.8.7.jar

我的代码如下:

public class Example { 

public static void main(String[] args) { 


    //http request 
    String website = "http://dbpedia.org/sparql"; 

    //whatever query we want to parse. 
    String query = "SELECT ?abstract WHERE { { <http://dbpedia.org/resource/Ronaldo> <http://dbpedia.org/ontology/abstract> ?abstract } }";     

    //query execution using the library object. 
    QueryExecution queryEx = QueryExecutionFactory.sparqlService(website, query); 


    try { 
     //results coming from the executed queries. 
     ResultSet results = queryEx.execSelect(); 

     //prints the output. 
     for(; results.hasNext();){ 
      //typecast results from set to qsolution 
      QuerySolution answer = (QuerySolution)results.next(); 

      System.out.println(answer.get("?abstract"));    

     } 
    } catch(Exception e){ 

     e.printStackTrace(); 
    } finally{ 
     queryEx.close(); 
    } 
} 

,我接收到错误的图像是:

<pre>Exception in thread "main" java.lang.NoSuchMethodError: com.hp.hpl.jena.iri.IRIFactory.jenaImplementation()Lcom/hp/hpl/jena/iri/IRIFactory; 
at com.hp.hpl.jena.n3.IRIResolver.<clinit>(IRIResolver.java:42) 
at com.hp.hpl.jena.sparql.mgt.SystemInfo.createIRI(SystemInfo.java:31) 
at com.hp.hpl.jena.sparql.mgt.SystemInfo.<init>(SystemInfo.java:23) 
at com.hp.hpl.jena.query.ARQ.init(ARQ.java:373) 
at com.hp.hpl.jena.query.ARQ.<clinit>(ARQ.java:385) 
at com.hp.hpl.jena.query.Query.<clinit>(Query.java:53) 
at com.hp.hpl.jena.query.QueryFactory.create(QueryFactory.java:68) 
at com.hp.hpl.jena.query.QueryFactory.create(QueryFactory.java:40) 
at com.hp.hpl.jena.query.QueryFactory.create(QueryFactory.java:28) 
at com.hp.hpl.jena.query.QueryExecutionFactory.sparqlService(QueryExecutionFactory.java:338) 
at Example.main(Example.java:27)<code> 

任何指导将不胜感激。提前致谢。

+1

添加您的代码和文字不作为链接到图片 – Jens

+0

会做,谢谢。 –

+1

请使用Maven,Ivy或Gradle等构建系统,也可以使用Jena的更新版本。 – AKSW

回答

1

jena-2.1是2004年2月。它与使用Jena 2.6.4的arq-2.8.7.jar(2010)不兼容。

现在2016是当前版本,请参见: http://jena.apache.org/download/

对于任何耶拿版本(目前1是3.1.0),你应该使用在分发提供的所有罐子。更好,如在评论中,学会使用使用maven/gradle/...这会自动发生。

不支持混合来自不同版本的部分罐子,极不可能工作。

+0

是的,我学会了很难。谢谢你的建议。 –