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

时间:2014-10-30 11:59:51

标签: 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.NoSuchMethodError: org.hsqldb.DatabaseURL.parseURL(Ljava/lang/String;ZZ)Lorg/hsqldb/persist/HsqlProperties;

编辑:它不起作用。旧版本来自hadoop-client:2.0.0-mr1-cdh4.2.0。我从中排除了hsqldb并检查了依赖树,并且旧版本没有显示出来。但我仍然在运行时收到错误。

2 个答案:

答案 0 :(得分:1)

你几乎肯定会有依赖性不匹配。

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

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

你很可能有错误版本的hsqldb jar或多个不同的版本(即正确的版本和错误的版本)。

这可能是由于

中的意外传递依赖性引起的

要确定传递依赖关系的来源,您可以使用maven依赖关系:树目标:

E.g。

mvn dependency:tree -Dverbose -Dincludes=hsqldb

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

http://maven.apache.org/plugins/maven-dependency-plugin/examples/resolving-conflicts-using-the-dependency-tree.html

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

<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>

此处有更多详情:http://maven.apache.org/guides/introduction/introduction-to-optional-and-excludes-dependencies.html

答案 1 :(得分:0)

我有同样的错误,而且是 我能够使用gt-epsg-wkt代替hsql来实现这一点。

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