Java 尝试连接到Sesame存储库时出现NoSuchMethodError
当我试图访问sesame服务器中的存储库时,我的项目中运行了以下代码: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
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版本吗?因为正如我之前所说:根据错误消息,是导致错误的原因,而不是您在自己的(客户端)程序中使用的芝麻版本。重复一次:你还需要检查是否有旧版本的芝麻。类路径上相同库的不同版本是导致此错误的常见原因。