Java NoSuchMethodError-org.hsqldb.DatabaseURL.parseURL
当使用hsql运行测试时,我遇到以下异常:Java NoSuchMethodError-org.hsqldb.DatabaseURL.parseURL,java,classpath,hsqldb,Java,Classpath,Hsqldb,当使用hsql运行测试时,我遇到以下异常: NoSuchMethodError: org.hsqldb.DatabaseURL.parseURL(Ljava/lang/String; ZZ)Lorg/hsqldb/persist/HsqlProperties 我在另一篇文章中发现了这个问题,该文章链接到一个解决方案,该解决方案说这是版本1.8的jar和版本2.2.5的另一个jar之间的冲突。 我检查了项目的库和.classpath,它只有1.8。我也从类路径中删除了它,但仍然得到了相同的异常
NoSuchMethodError: org.hsqldb.DatabaseURL.parseURL(Ljava/lang/String; ZZ)Lorg/hsqldb/persist/HsqlProperties
我在另一篇文章中发现了这个问题,该文章链接到一个解决方案,该解决方案说这是版本1.8的jar和版本2.2.5的另一个jar之间的冲突。
我检查了项目的库和.classpath
,它只有1.8。我也从类路径中删除了它,但仍然得到了相同的异常
仍然无法理解。您正在使用库的更高版本进行编译,并使用早期版本运行它 编译时存在的方法在运行时->NoSuchMethodError时不存在 解决方案:在运行时使用相同的库。如果使用maven(正如您所提到的)project,则可能会从pom.xml继承某些内容,并在项目的某个依赖项中重写它,从而导致冲突
请注意,对于
hsql
,maven组id已从hsqldb
更改为org.hsqldb
,这可能会使这两个JAR很容易在同一个项目中共存并导致此问题。在build.sbt
中使用程序集着色对其进行修复:
assemblyShadeRules in assembly := Seq(
ShadeRule.rename("org.hsqldb.**" -> "shade-hsqldb.@1").inAll
)
在编译时和运行时使用相同的类路径库,错误就会消失。我如何检查这一点?通过检查运行时类路径,不管是什么。如果我使用maven编译和构建eclipse项目,你知道这会发生什么吗?@Avi检查依赖项的版本及其范围。我打赌作用域不是运行时。这似乎是正确的方法。我们还有一些调查要做,但我们的pom.xml文件中似乎有一些冲突。谢谢