Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/394.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 尝试连接到Sesame存储库时出现NoSuchMethodError_Java_Repository_Sesame - Fatal编程技术网

Java 尝试连接到Sesame存储库时出现NoSuchMethodError

Java 尝试连接到Sesame存储库时出现NoSuchMethodError,java,repository,sesame,Java,Repository,Sesame,当我试图访问sesame服务器中的存储库时,我的项目中运行了以下代码: try{ String serverUrl = "http://localhost:8080/openrdf-sesame"; String repositoryID ="200"; RepositoryProvider.getRepositoryManager(serverUrl); Repository myRepository =new HTTPRepository(serv

当我试图访问sesame服务器中的存储库时,我的项目中运行了以下代码:

   try{
    String serverUrl = "http://localhost:8080/openrdf-sesame";
    String repositoryID ="200"; 
     RepositoryProvider.getRepositoryManager(serverUrl);
     Repository myRepository =new HTTPRepository(serverUrl,repositoryID);
                myRepository.initialize();
                RepositoryConnection con= myRepository.getConnection();
    }
我甚至使用调试来定位错误的来源,但它似乎来自:

    RepositoryConnection con= myRepository.getConnection();
当我运行代码时,会出现以下错误

HTTP Status 500 -

type Exception report

message

descriptionThe server encountered an internal error () that prevented it from fulfilling this request.

exception

java.lang.NoSuchMethodError: org.openrdf.model.impl.ValueFactoryImpl.getInstance()Lorg/openrdf/model/impl/ValueFactoryImpl;

note The full stack traces of the exception and its root causes are available in the GlassFish Server Open Source Edition 3.1.1 logs.

NoSuchMethodError
通常表示您正在使用不同版本的库运行程序,而不是使用以前的库编译程序。一个常见的原因是运行时类路径包含同一库的多个版本,而JRE选择了“错误的版本”


由于本例中的错误发生在服务器端,因此您应该查看GlassFish部署,并确保它不包含多个版本的Sesame库

可能重复我在错误后尝试过的,但是当我打开org.openrdf.model.impl.valuefactorympl时,没有getInstance()方法,我不知道为什么getConnection()调用getInstance(),因为您使用的是错误版本的sesame库。ValueFactoryImpl确实有一个静态的
getInstance()
方法,如果您的副本没有,这意味着您正在使用一个非常旧的版本。一般来说,您应该仔细查看您的项目设置,并检查是否包含库的正确版本(不包括任何旧的/过时的版本)。我已更新到最新版本的sesame-model-2.8.0-beta2.jar,并已检查该方法是否确实存在。但我还是收到了同样的错误消息。你真的在检查(Glassfish)服务器上运行的Sesame版本吗?因为正如我之前所说:根据错误消息,是导致错误的原因,而不是您在自己的(客户端)程序中使用的芝麻版本。重复一次:你还需要检查是否有旧版本的芝麻。类路径上相同库的不同版本是导致此错误的常见原因。