首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jena SPARQL例外

jena SPARQL例外
EN

Stack Overflow用户
提问于 2015-01-03 17:35:59
回答 1查看 894关注 0票数 0

我想使用java中的SPARQL查询询问我的data.rdf RDF文件。

为此,我使用了Jena API,下面是我的源代码:

代码语言:javascript
复制
import org.apache.log4j.chainsaw.Main;
import com.hp.hpl.jena.query.Query;
import com.hp.hpl.jena.query.QueryExecution;
import com.hp.hpl.jena.query.QueryExecutionFactory;
import com.hp.hpl.jena.query.QueryFactory;
import com.hp.hpl.jena.query.QuerySolution;
import com.hp.hpl.jena.query.ResultSet;
import com.hp.hpl.jena.rdf.model.Literal;
import com.hp.hpl.jena.rdf.model.Model;
import com.hp.hpl.jena.util.FileManager;
public class HelloRDFWorld {
    public static void main(String[] args) {
        FileManager.get().addLocatorClassLoader(Main.class.getClassLoader());
        Model model=FileManager.get().loadModel("D:/workspace_java/JenaTutorial/src/data.rdf");

        String querystring=
                "Prefix rdf:<http://www.w3.org/1999/02/22-rdf-syntax-ns#>"+
                "PREFIX FOAF: <http://xmlns.com/foaf/0.1/>"+
                "select *  where"+
                "{"+
                "?person foaf:name ?"+
                "}";
        Query query = QueryFactory.create(querystring);
        QueryExecution qexec= QueryExecutionFactory.create(query);
        try
        {
            ResultSet result= qexec.execSelect();
            while(result.hasNext()){
                QuerySolution sol= result.nextSolution();
                Literal name= sol.getLiteral("x");
                System.out.println(name);   
            }
        }
        finally{
            qexec.close();
        }

    }
}

这是我的RDF文件:

代码语言:javascript
复制
<rdf:RDF>
  <foaf:person>
    <foaf:name>gorge</foaf:name>
  </foaf:person>
  <foaf:person>
    <foaf:name>Johon</foaf:name>
  </foaf:person>
</rdf:RDF>

在执行之后,它显示了这个异常。

代码语言:javascript
复制
Exception in thread "main" java.lang.UnsupportedClassVersionError: com/hp/hpl/jena/util/FileManager : Unsupported major.minor version 51.0
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClassCond(Unknown Source)
    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$000(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 tutorial.HelloRDFWorld.main(HelloRDFWorld.java:19)

那么问题在哪里呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-01-03 17:48:15

您已经尝试在旧JVM中运行针对Java 7编译的库(在本例中是Jena)。你有三个选择:

  1. 使用受支持的JVM (Oracle不再支持Java 6和之前)
  2. 使用您使用的Java重新编译要使用的库(可能不可能,因为它可能使用Java 7中的API)。
  3. 尝试一些Java支持工具 (但是如果有从更高的JDK中使用的API,它在运行时可能仍然会失败)。(尽管在您的例子中,似乎没有从7到6或5的追溯工具。)

强烈推荐第一个选项(最快和最安全,可能是最受支持的选项)。

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

https://stackoverflow.com/questions/27757624

复制
相关文章

相似问题

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