4

当使用 hsql 运行测试时,我得到了这个异常:

NoSuchMethodError: org.hsqldb.DatabaseURL.parseURL(Ljava/lang/String; ZZ)Lorg/hsqldb/persist/HsqlProperties

我在另一篇帖子中发现了这个问题,该帖子链接到一个解决方案,该解决方案说这是 1.8 版 jar 和 2.2.5 版另一个 jar 之间的冲突。我检查了项目的库,.classpath它只有 1.8。我也从类路径中删除了它,但仍然遇到同样的异常。

还是想不通。

4

3 回答 3

8

您正在使用更高版本的库进行编译,并使用早期版本运行它。

编译时存在的方法在运行时不存在 -> NoSuchMethodError。

解决方案:在运行时使用相同的库。

于 2013-09-16T09:52:52.940 回答
4

如果您使用 maven(正如您提到的那样)项目,您可能会从 pom.xml 继承某些内容并在项目的一个依赖项中覆盖它,这可能会导致冲突。

请注意,对于hsqlmaven 组 id 已更改hsqldborg.hsqldbwhich 可能很容易让这 2 个 jar 一起存在于同一个项目中并导致此问题。

于 2013-09-17T22:35:57.687 回答
0

用装配阴影修复它build.sbt

assemblyShadeRules in assembly := Seq(
  ShadeRule.rename("org.hsqldb.**" -> "shade-hsqldb.@1").inAll
)
于 2019-04-01T14:22:34.353 回答