Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/323.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 NoSuchMethodError-org.hsqldb.DatabaseURL.parseURL_Java_Classpath_Hsqldb - Fatal编程技术网

Java NoSuchMethodError-org.hsqldb.DatabaseURL.parseURL

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。我也从类路径中删除了它,但仍然得到了相同的异常

当使用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时不存在

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

如果使用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文件中似乎有一些冲突。谢谢