java.lang.NoSuchMethodError:org.hsqldb.DatabaseURL.parseURL maven运行时

java.lang.NoSuchMethodError:org.hsqldb.DatabaseURL.parseURL maven运行时,java,maven,hsqldb,Java,Maven,Hsqldb,获取以下错误。问题是,当我们重新启动服务器时,它会间歇性地发生。有时会出现错误,有时不会。如何解决这个问题?我正在使用maven java.lang.NoSuchMethodError: org.hsqldb.DatabaseURL.parseURL(Ljava/lang/String;ZZ)Lorg/hsqldb/persist/HsqlProperties; org.codehaus.groovy.runtime.InvokerInvocationException: java.lang.N

获取以下错误。问题是,当我们重新启动服务器时,它会间歇性地发生。有时会出现错误,有时不会。如何解决这个问题?我正在使用maven

java.lang.NoSuchMethodError: org.hsqldb.DatabaseURL.parseURL(Ljava/lang/String;ZZ)Lorg/hsqldb/persist/HsqlProperties;
org.codehaus.groovy.runtime.InvokerInvocationException: java.lang.NoSuchMethodError: org.hsqldb.DatabaseURL.parseURL(Ljava/lang/String;ZZ)Lorg/hsqldb/persist/HsqlProperties;

编辑:它不工作了。旧版本来自hadoop客户端:2.0.0-mr1-cdh4.2.0。我从中排除了hsqldb,并签入了依赖关系树,而旧版本没有显示出来。但我仍然在运行时遇到错误。

您几乎肯定存在依赖项不匹配

确保您知道希望使用哪个版本的hsqldb

检查应用程序正在使用的依赖项列表,我指的是构建应用程序中的实际JAR文件,而不是maven依赖项列表

最可能的情况是,您的hsqldb jar版本错误,或者有多个不同的版本(即正确的版本和错误的版本)

这可能是由拉入意外的可传递依赖项引起的

要确定可传递依赖项的来源,可以使用maven dependency:tree目标:

例如

其中hsqldb是您要查找的工件的名称

一旦确定了多个版本的来源,就可以从这些依赖项中排除,例如:

<dependency>
  <groupId>sample.ProjectA</groupId>
  <artifactId>Project-A</artifactId>
  <version>1.0</version>
  <scope>compile</scope>
  <exclusions>
    <exclusion>  <!-- declare the exclusion here -->
      <groupId>sample.ProjectB</groupId>
      <artifactId>Project-B</artifactId>
    </exclusion>
  </exclusions> 
</dependency>

示例项目a

我也犯了同样的错误,而且 我能够使用gt epsg wkt而不是hsql来实现这一点

<dependency>
    <groupId>org.geotools</groupId>
    <artifactId>gt-epsg-wkt</artifactId>
    <version>${geotools.version}</version>
</dependency>

org.geotools
gt epsg wkt
${geotools.version}

如何强制特定版本的hsqldb?我已经看到和两个罐子来自许多依赖项。如何修复它因为它来自许多来源我已经扩展了答案,首先你需要确定它来自哪里,然后你需要排除那些你不想要的。已经这样做了。但它来自多个地方。我可以在top pom.xml中做些什么来限制一个库吗?我想您可以在顶级父pom的
部分设置托管版本。然后所有可传递依赖项将使用相同的版本。它不工作。旧版本来自hadoop客户端。我从中排除了hsqldb,并签入了依赖关系树,而旧版本没有显示出来。但我仍然在运行时得到错误。
<dependency>
    <groupId>org.geotools</groupId>
    <artifactId>gt-epsg-wkt</artifactId>
    <version>${geotools.version}</version>
</dependency>