首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Jena Fuseki客户

Jena Fuseki客户
EN

Stack Overflow用户
提问于 2016-10-13 18:47:00
回答 1查看 822关注 0票数 0

我试图用Java编写一个简单的Jena客户机来发送一个SELECT SPARQL查询并获得结果。

我发现了其他人编写的以下代码。它总是在运行时崩溃。

我用的是jena-arq-3.1.0.jar

javac -cp .;jena-arq-3.1.0.jar Main.java打印无错误

java -cp .;jena-arq-3.1.0.jar Main崩溃!

错误日志

代码语言:javascript
复制
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/jena/atlas/io/Printable
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClass(Unknown Source)
        at java.security.SecureClassLoader.defineClass(Unknown Source)
        at java.net.URLClassLoader.defineClass(Unknown Source)
        at java.net.URLClassLoader.access$100(Unknown Source)
        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)
        at org.apache.jena.query.QueryFactory.create(QueryFactory.java:78)
        at org.apache.jena.query.QueryFactory.create(QueryFactory.java:52)
        at org.apache.jena.query.QueryFactory.create(QueryFactory.java:40)
        at Main.main(Main.java:24)
Caused by: java.lang.ClassNotFoundException: org.apache.jena.atlas.io.Printable
        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)
        ... 16 more

Main.java

代码语言:javascript
复制
import java.net.URL;
import java.util.List; 

import org.apache.jena.query.Query; 
import org.apache.jena.query.QueryExecution; 
import org.apache.jena.query.QueryExecutionFactory; 
import org.apache.jena.query.QueryFactory; 
import org.apache.jena.query.QuerySolution; 
import org.apache.jena.query.ResultSet; 

class Main { 

    public static void main(final String[] args) throws Exception { 
        String queryString=
        "prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>"+
        "prefix owl: <http://www.w3.org/2002/07/owl#>"+

        "SELECT ?subject ?predicate ?object"+
        "WHERE {"+
        " ?subject ?predicate ?object"+
        " } LIMIT 25";

        // now creating query object
        Query query = QueryFactory.create(queryString);
        // initializing queryExecution factory with remote service.
        // **this actually was the main problem I couldn't figure out.**
        QueryExecution qexec = QueryExecutionFactory.sparqlService("http://localhost:3030/FirstEndpoint/sparql", query);

        //after it goes standard query execution and result processing which can
        // be found in almost any Jena/SPARQL tutorial.
        try {
            ResultSet results = qexec.execSelect();
            for (; results.hasNext();) {

            // Result processing is done here.
            }
        }
        finally {
           qexec.close();
        }
    } 

}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-10-13 19:33:58

您需要类路径中所有必需的库,而不仅仅是jena-arq

javac之所以有效,是因为您只使用jena中的类。java无法工作,因为在运行时,ARQ类引用了其他类,例如在jena-core、jena-iri等中。

最简单的方法是从Jena发行版resp中添加所有lib。lib文件夹本身到类路径。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40028691

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档