当前位置: 首页 > 面试题库 >

Maven和apache utils的编译错误

公冶谦
2023-03-14
问题内容

org.apache.commons.lang3.BooleanUtilscommons-lang3(版本3.1)中使用。当我尝试编译下一行代码

BooleanUtils.xor(true, true);

使用maven-compiler-plugin(版本3.3),我收到编译失败消息:

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.3:compile (default-compile) on project exchange: Compilation failure
[ERROR] MyClass.java:[33,34] reference to xor is ambiguous, both method xor(boolean...) in org.apache.commons.lang3.BooleanUtils and method xor(java.lang.Boolean...) in org.apache.commons.lang3.BooleanUtils match

我使用Java 1.7.0_55进行编译。

我该如何解决?


问题答案:

发生问题是因为方法的签名具有可变参数。调用方法时,将分三个阶段搜索所有适用的方法。在阶段3中搜索具有可变参数的方法,在该阶段中,可以进行装箱和拆箱。

因此xor(boolean...)xor(Boolean...)都适用于此处,因为考虑了装箱。当有多种方法适用时,仅调用最具体的方法。但是在这种情况下,boolean并且Boolean无法进行比较,因此没有更具体的方法,因此会出现编译器错误:两种方法都匹配。

一种解决方法是创建一个显式数组:

public static void main(String[] args) {
    xor(new boolean[] { true, false }); // will call the primitive xor
    xor(new Boolean[] { Boolean.TRUE, Boolean.FALSE }); // will call the non-primitive xor
}

private static Boolean xor(Boolean... booleans) {
    System.out.println("Boolean...");
    return Boolean.TRUE;
}

private static boolean xor(boolean... booleans) {
    System.out.println("boolean...");
    return true;
}


 类似资料:
  • 问题内容: 当我在Netbeans中构建并运行程序时,它可以正常工作。但是当我尝试“ mvn compile”时,使用相同的pom.xml文件会出现以下错误: 我的Java版本不是1.3,这里是“ mvn -version”的结果 这是第53行: 问题答案: 问题是在Maven2中默认使用和 您可以通过将其添加到pom中来解决此问题: 将其放在最顶层的父pom中是很实际的,这样您派生的pom不需要

  • 编译模块com。实例我的包裹。GWT。HelloGWT [INFO]验证新编译的单元 [INFO]在第一次过程中忽略了1个单元,其中包含编译错误 [INFO]编译时将-strict或-logLevel设置为TRACE或DEBUG以查看所有错误 [INFO]在文件:/home/ilsurih/Projects/maven hibernate/src/main/java/com/example/myP

  • 从事maven项目。我试图使用maven进行构建,但我遇到了以下错误!我正在使用JDK 8开发eclipse。 无法执行目标org.apache.maven.plugins:maven-compiler-plugin:2.3.2:编译(默认编译) 我也尝试了上面的解决方案,但我仍然得到错误!

  • 我在Eclipse中使用maven创建了一个webapp项目。当我在命令提示符下运行命令mvn包时,它会显示folowing错误。 我尝试更改jdk和JRE。但不起作用。仍然显示相同的错误

  • 生成失败,错误如下: [ERROR]未能执行目标org.apache.maven.plugins:maven-compiler-plugin:3.1:编译(默认编译)上的项目r esPonderhub:编译失败[ERROR] /X:/工作区/响应器HubWorkspace/响应器Hub/src/main/java/uk/org/响应器Hub/MemberServlet.java:[23,110]找

  • 删除.m2文件夹 重新安装Eclipse 在pom.xml上设置可执行文件 将生成选项设置为清除 pom.xml 没有一个奏效。有什么猜测吗?