Java Jena Fuseki客户

Java Jena Fuseki客户,java,sparql,Java,Sparql,我正试图用Java编写一个简单的Jena Fuseki客户端,以发送SELECTSPARQL查询并获得结果 我发现以下代码是由其他人编写的。它在运行时不断崩溃 我正在使用jena-arq-3.1.0.jar javac-cp。;jena-arq-3.1.0.jar Main.java打印无错误 java-cp。;jena-arq-3.1.0.jar Maincrash 错误日志 Main.java import java.net.URL; 导入java.util.List; 导入org.apac

我正试图用Java编写一个简单的Jena Fuseki客户端,以发送
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
crash

错误日志
Main.java
import java.net.URL;
导入java.util.List;
导入org.apache.jena.query.query;
导入org.apache.jena.query.QueryExecution;
导入org.apache.jena.query.QueryExecutionFactory;
导入org.apache.jena.query.QueryFactory;
导入org.apache.jena.query.QuerySolution;
导入org.apache.jena.query.ResultSet;
类主{
公共静态void main(最终字符串[]args)引发异常{
字符串查询字符串=
“前缀rdfs:”+
“前缀owl:”+
“选择?主语?谓语?宾语”+
“其中{”+
“?主语?谓语?宾语”+
“}限制25”;
//现在正在创建查询对象
Query=QueryFactory.create(queryString);
//正在使用远程服务初始化queryExecution工厂。
//**这实际上是我无法解决的主要问题**
QueryExecution qexec=QueryExecutionFactory.sparqlService(“http://localhost:3030/FirstEndpoint/sparql“,查询);
//然后执行标准查询和结果处理,可以
//几乎可以在任何Jena/SPARQL教程中找到。
试一试{
ResultSet results=qexec.execSelect();
对于(;results.hasNext();){
//结果处理在这里完成。
}
}
最后{
qexec.close();
}
} 
}

类路径中需要所有必要的lib,而不仅仅是
jenaarq

javac
之所以有效,是因为您只使用来自jena arq JAR的类。
java
不起作用,因为在运行时,ARQ的类引用了其他类,如jena-core、jena-iri等


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

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

javac
之所以有效,是因为您只使用来自jena arq JAR的类。
java
不起作用,因为在运行时,ARQ的类引用了其他类,如jena-core、jena-iri等


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

您需要类路径中所有必要的lib,不仅jena Arq您需要类路径中所有必要的lib,不仅jena arqi有一个名为apache-jena-3.1.0.zip(apache jena framework)的zip文件,而且它有许多文件和文件夹。其中一个子文件夹是lib,它包含我试图导入的jar。如何导入整个ApacheJena zip?我必须在代码中更改什么?谢谢你的帮助:)javac-cp。;jena310_libs/*Main.java-cp。;jena310_libs/*Maini有一个名为apache-jena-3.1.0.zip(apache-jena框架)的zip文件,它有许多文件和文件夹。其中一个子文件夹是lib,它包含我试图导入的jar。如何导入整个ApacheJena zip?我必须在代码中更改什么?谢谢你的帮助:)javac-cp。;jena310_libs/*Main.java-cp。;jena310_libs/*Main
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
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();
        }
    } 

}