gpt4 book ai didi

与类构造函数相关的 java.lang.NoSuchMethodError

转载 作者:行者123 更新时间:2023-11-29 03:02:45 25 4
gpt4 key购买 nike

我有以下类签名:

public BlockstemRequester(RateLimiter throttler, 
String url, List<String> payloadsToBeRequested, List<String> objRef) {
.
.
.
}

我在以下代码中使用该构造函数:

threads.add(new BlockstemRequester(RateLimiter.create(1.0),
String.format("url...", apiKey),
chunks.get(index),
chunksObjRef.get(index)))

哪里:

  • RateLimiter 来自 import com.google.common.util.concurrent.RateLimiter
  • chunks 定义为 val chunks:util.List[util.List[String]] = new util.Vector[util.List[String]]<
  • chunksObjRef 定义为 val chunksObjRef:util.List[util.List[String]] = new util.Vector[util.List[String]]<

但是,不幸的是,我收到一条错误消息,提示我找不到或未定义类构造函数:

java.lang.NoSuchMethodError: BlockstemRequester.<init>(Lcom/google/common/util/concurrent/RateLimiter;Ljava/lang/String;Ljava/util/List;Ljava/util/List;)

基本上,我在我的 java 代码项目中使用在 Scala 中定义的此类,并且我确实定义了 scala 类以使用来自 java 的 List 以避免语言之间类型不兼容的任何问题。

在运行时,根据我的调试过程,我得到以下类型:

  • chunks 是一个 Vector[Collections$SynchronizedRandomAccessList]
  • chunksObjRef 是一个Vector[Collections$SynchronizedRandomAccessList]

我很感激对这个问题的任何帮助。谢谢!

最佳答案

根据 Java docs :

Thrown if an application tries to call a specified method of a class (either static or instance), and that class no longer has a definition of that method. Normally, this error is caught by the compiler; this error can only occur at run time if the definition of a class has incompatibly changed.

从你的问题来看,不清楚你是在编译时还是在运行时得到这个,但看起来你在运行时遇到了问题。因此,使用 Java 反编译器检查此类的 .class 是否存在此方法。

这个问题最可能的根本原因是编译时使用的库有这样的方法,但运行时使用的库没有它,因此 NoSuchMethodError

使用反编译器检查类的.class文件。

关于与类构造函数相关的 java.lang.NoSuchMethodError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33832400/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com