函数需要两个参数,但定义只包含一个参数

Function expects two parameters, but definition only contains one parameter

我有一个很奇怪的问题,它很简单,但我不明白问题是什么。

我有一个 class,ClassA 调用 ClassB 中的函数,例如 ->

ClassA {
  
  private transient MessageHelper MessageHelper
  private transient ClassB classB;

  private boolean messageNotification(Param1 firstParam, Param2 secondParam)
  {
    ...messageBean = messageHelper.getAMessageBean(firstParam, secondParam)...
    
    ...

    classB.sendMessage(messageBean);
  }
}

Class A是在我的applicationContext.xml中定义的一个bean,比如>>

    <bean id="classa" class="path.to.ClassA">
        <property name="messageHelper" ref="messageHelper"/>
        <property name="classB" ref="classB"/>
    </bean>

ClassB 中的函数定义类似于 >>

public boolean sendMessage(MessageBean bean) throws MessageException { ... }

IntelliJ 没有指出任何语法问题,一切看起来都很正常...但是,当我尝试编译时,我从 Maven 得到了一个异常 >>

ClassA.java:[292,27] method sendMessage in class MessageSender cannot be applied to given types;
  required: MessageBean,boolean
  found: MessageBean
  reason: actual and formal argument lists differ in length

Class B 与 Class A 在不同的模块中,因此 class B 在 ClassA 的 pom.xml 中作为依赖项

我正在使用 jdk 1.8.0_212 和 maven 版本 3.6.3

ClassB 的模块构建完全没有问题。 运行 mvn clean install 在 ClassA 的模块中发生错误 我试过在 intellij

中使缓存无效

谁能帮我理解这里的问题是什么?

在包含 ClassB

的模块上尝试 mvn install

注意:添加此答案是因为我无法作为新贡献者添加评论。

您的 Maven 发现一些包含 classB 的旧版本模块已经编译,因此它不会重建该模块。尝试在您的 inteliJ 中清除您的目标目录,并查看您的 m2 本地存储库中是否存在该模块。如果它在那里删除它。它将强制在构建 classA 模块时重建 classB 模块。如果可以的话,您可能还想 运行 手动构建 classB 模块。