Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 尝试使用jena创建SPARQL查询时使用NoSuchMethod_Java_Sparql_Jena_Arq - Fatal编程技术网

Java 尝试使用jena创建SPARQL查询时使用NoSuchMethod

Java 尝试使用jena创建SPARQL查询时使用NoSuchMethod,java,sparql,jena,arq,Java,Sparql,Jena,Arq,我试图使用ARQ示例中的vc-db-1.rdf和q1.rq进行一些SPARQL查询。这是我的java代码: import com.hp.hpl.jena.rdf.model.*; import com.hp.hpl.jena.util.FileManager; import com.hp.hpl.jena.query.* ; import com.hp.hpl.jena.query.ARQ; import com.hp.hpl.jena.iri.*; import java.io.*; publ

我试图使用ARQ示例中的vc-db-1.rdf和q1.rq进行一些SPARQL查询。这是我的java代码:

import com.hp.hpl.jena.rdf.model.*;
import com.hp.hpl.jena.util.FileManager;
import com.hp.hpl.jena.query.* ;
import com.hp.hpl.jena.query.ARQ;
import com.hp.hpl.jena.iri.*;
import java.io.*;
public class querier extends Object 
{
static final String inputFileName = "vc-db-1.rdf";
public static void main (String args[]) 
{
    // Create an empty in-memory model 
    Model model = ModelFactory.createDefaultModel();
    // use the FileManager to open the bloggers RDF graph from the filesystem
    InputStream in = FileManager.get().open(inputFileName);
    if (in == null) 
    {
        throw new IllegalArgumentException( "File: " + inputFileName + " not found");
    }
    // read the RDF/XML file
    model.read( in, ""); 
    // Create a new query
    String queryString = "PREFIX vcard: <http://www.w3.org/2001/vcard-rdf/3.0#> SELECT ?y ?givenName WHERE { ?y vcard:Family \"Smith\" . ?y vcard:Given  ?givenName . }";
    QueryFactory.create(queryString);
}
}
并作出以下解释:

C:\Wallet\projects\java\ARQ_queries>java querier
Exception in thread "main" java.lang.NoSuchMethodError: com.hp.hpl.jena.iri.IRI.
resolve(Ljava/lang/String;)Lcom/hp/hpl/jena/iri/IRI;
    at com.hp.hpl.jena.n3.IRIResolver.resolveGlobal(IRIResolver.java:191)
    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 querier.main(querier.java:24)
C:\Wallet\projects\java\ARQ\u querys>java查询器
线程“main”java.lang.NoSuchMethodError中出现异常:com.hp.hpl.jena.iri.iri。
解析(Ljava/lang/String;)Lcom/hp/hpl/jena/iri/iri;
位于com.hp.hpl.jena.n3.irisolver.resolveGlobal(irisolver.java:191)
位于com.hp.hpl.jena.sparql.mgt.SystemInfo.createIRI(SystemInfo.java:31)
位于com.hp.hpl.jena.sparql.mgt.SystemInfo.(SystemInfo.java:23)
位于com.hp.hpl.jena.query.ARQ.init(ARQ.java:373)
在com.hp.hpl.jena.query.ARQ.(ARQ.java:385)
访问com.hp.hpl.jena.query.query.(query.java:53)
位于com.hp.hpl.jena.query.QueryFactory.create(QueryFactory.java:68)
位于com.hp.hpl.jena.query.QueryFactory.create(QueryFactory.java:40)
在com.hp.hpl.jena.query.QueryFactory.create(QueryFactory.java:28)上
位于queryer.main(queryer.java:24)

我怎样才能解决这个问题?谢谢。

看起来类路径上缺少IRI库(IRI库与主Jena JAR分开)。Jena在运行时依赖于Jena发行版的
lib
目录中包含的其他几个库。所有这些都需要在运行时(但不一定在编译时)位于类路径上。

该死,我再次检查了它(已经检查了3次),发现我在类路径中写“iri.jar”时出错(被写为“jri.jar”)。非常感谢。假设Java 6或更高版本,类路径中的通配符是受支持的,因此您可以只说“-cp lib/*”之类的话
C:\Wallet\projects\java\ARQ_queries>java querier
Exception in thread "main" java.lang.NoSuchMethodError: com.hp.hpl.jena.iri.IRI.
resolve(Ljava/lang/String;)Lcom/hp/hpl/jena/iri/IRI;
    at com.hp.hpl.jena.n3.IRIResolver.resolveGlobal(IRIResolver.java:191)
    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 querier.main(querier.java:24)