将Sesame应用程序部署到Tomcat后出错

时间:2013-09-17 10:46:06

标签: java spring tomcat sesame

我使用sesame依赖项创建了一个应用程序:

<dependency>
            <groupId>org.openrdf.sesame</groupId>
            <artifactId>sesame-runtime</artifactId>
            <version>2.7.5</version>
        </dependency>

        <dependency>
            <groupId>org.openrdf.sesame</groupId>
            <artifactId>sesame-repository-sail</artifactId>
            <version>2.7.5</version>
        </dependency>
        <dependency>
            <groupId>org.openrdf.sesame</groupId>
            <artifactId>sesame-sail-memory</artifactId>
            <version>2.7.5</version>
        </dependency>

在Spring IDE中使用集成的Tomcat运行它时,它可以正常工作。  我将它部署到Tomcat 7中,但在访问我在代码中使用的方法之一时出现以下错误:(在Spring中同样适用)

java.lang.AbstractMethodError:org.openrdf.repository.sail.SailRepositoryConnection.begin()V     at org.openrdf.repository.event.base.NotifyingRepositoryConnectionWrapper.begin(NotifyingRepositoryConnectionWrapper.java:272)     at org.openrdf.repository.manager.SystemRepository.initialize(SystemRepository.java:88)     at org.openrdf.repository.manager.LocalRepositoryManager.createSystemRepository(LocalRepositoryManager.java:107)     at org.openrdf.repository.manager.LocalRepositoryManager.createSystemRepository(LocalRepositoryManager.java:62)     at org.openrdf.repository.manager.RepositoryManager.initialize(RepositoryManager.java:104)     在com.mvc.API.StorageAPI.createNativeLocalRepository(StorageAPI.java:154)

在第154行,我有: manager.initialize();

来自:

文件dataDir =新文件(REPOSITORY_NAME); RepositoryManager manager = new LocalRepositoryManager(dataDir);

RepositoryManager是一个来自Sesame的抽象类,它有一个实现的方法initialize(),LocalRepositoryManger继承自它,但不会覆盖方法initialize()。 我也尝试过使用Tomcat 6.0.37并将芝麻依赖项更改为2.7.6 你知道为什么我会收到这个错误吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

如果用于运行程序的已编译代码与用于实际编译程序的代码不同,则AbstractMethodError只能在运行时发生。

这样做的一个常见原因是你使用不同版本的jar库进行编译而不是用来实际运行程序 - 可能是因为你的类路径中有相同jar的两个版本,或者其他一些构建/运行设置不一致。

检查您的构建路径和/或运行时类路径是否包含错误或重复的jar文件。如果您最近更改了maven依赖项,请确保重新生成编译时构建路径,例如使用&#39; mvn eclipse:clean eclipse:eclipse&#39;从命令行,或使用M2E的刷新选项(如果你正在使用Eclipse M2E插件,那就是)。