线程“主”中的异常java.lang.NoSuchMethodError: org.apache.http.client.methods.RequestBuilder.post(Ljava / lang / String;)Lorg / apache / http / client / methods / RequestBuilder; 在 org.eclipse.rdf4j.http.client.SesameSession.getQueryMethod(SesameSession.java:701) 在 org.eclipse.rdf4j.http.client.SparqlSession.sendTupleQuery(SparqlSession.java:380) 在 org.eclipse.rdf4j.repository.http.HTTPTupleQuery.evaluate(HTTPTupleQuery.java:49) 在 com.cmclinnovations.jps.kb.ontokin.SparqlEndpoint.queryRepository(SparqlEndpoint.java:92) 在 com.cmclinnovations.jps.kb.ontokin.SparqlEndpoint.main(SparqlEndpoint.java:49)
当尝试使用以下代码查询RDF4J三元存储时,我遇到了上述问题。
try {
Repository repo = new HTTPRepository(serverURL, repositoryID);
repo.initialize();
RepositoryConnection con = repo.getConnection();
try {
System.out.println("QueryString:\n"+queryString);
// Export all statements in the context to System.out, in RDF/XML format
TupleQuery queryResult = con.prepareTupleQuery(queryString);
// A QueryResult is also an AutoCloseable resource, so make sure it gets
// closed when done.
try (TupleQueryResult result = queryResult.evaluate()) {
json = getResultInJson(json, result);
}finally{
// Before our program exits, make sure the database is properly shut down.
repo.shutDown();
}
} catch(Exception e){
logger.error("Exception occurred.");
e.printStackTrace();
throw new OntoException("Exception occurred.");
} finally {
logger.info("Successfully performed query");
con.close();
}
} catch (RDF4JException e) {
logger.error("RDF4JException occurred.");
e.printStackTrace();
throw new OntoException("RDF4JException occurred.");
}
对于HTTPClient,我将以下依赖项放入了项目的pom文件中。
<!-- Use Apache HttpClient as HTTP Client -->
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.3.2</version>
</dependency>