java.lang.NoSuchMethodError:org.apache.http.client.methods.RequestBuilder.post

java.lang.NoSuchMethodError:org.apache.http.client.methods.RequestBuilder.post,java,apache-httpclient-4.x,Java,Apache Httpclient 4.x,线程“main”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

线程“main”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.cmclinovations.jps.kb.ontokin.sparqlenpoint.queryRepository(sparqlenpoint.java:92) 在 com.cmclinovations.jps.kb.ontokin.sparqlendopment.main(sparqlendopment.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>

org.apache.httpcomponents
httpclient
4.3.2

NoSuchMethodError
如果类路径中有不兼容的jar文件,通常会发生。检查
RDF4J
httpclient
的兼容性,并且放置
logger.info(“已成功执行的查询”)也很奇怪在您的
finally
块中,假设在引发异常时它将被执行。@Vincz777感谢您的评论。它被更改如下:最后{con.close();logger.info(“连接已成功关闭”);}@Jens我正在尝试使用不同版本的httpclient。如果这个问题消失了,我会通知您的。非常感谢您提供了到依赖项的链接。它适用于httpclient版本4.5.2。我将其更新如下:org.apache.httpcomponents httpclient 4.5.2