当前位置: 首页 > 知识库问答 >
问题:

Java java.lang.IllegalArgumentException: 错误的参数数量

满元凯
2023-03-14

我尝试在具有不可见结构器类(字符串变量0,记录器var1,记录器上下文变量2)的最终类中访问info(字符串变量)方法)

java prettyprint-override">try {
Constructor<? extends Logger> var0 = logger.getClass().getDeclaredConstructor(String.class, Logger.class, LoggerContext.class);

var0.setAccessible(true);

logger.getClass().getDeclaredMethod("info", String.class).invoke(var0.newInstance(), new String(message));

} catch (NoSuchMethodException | SecurityException | IllegalAccessException | IllegalArgumentException | InvocationTargetException | InstantiationException e) {
            e.printStackTrace();
}

这就是错误

java.lang.IllegalArgumentException: wrong number of arguments
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
    at java.lang.reflect.Constructor.newInstance(Unknown Source)

共有2个答案

晋承嗣
2023-03-14

解决了!然后,您应该从logger manager/factory获取logger的实例,比如logger factory . get logger(" my logger ")。info("message "),其中记录器的名称通常是类名,但不一定是。- @GotoFinal

编辑:对不起,我不知道如何标记正确答案,这里很新。

江嘉悦
2023-03-14

您只能将var0.newInstance()与它的参数一起使用。

只需将< code>String、< code>Logger和< code>LoggerContext的对象传递给< code>newInstance()方法。

 类似资料:
  • 我正在使用类集合,并有一行代码,如下所示。请找到完整的代码如下所示,让我知道什么是错误的代码,因为我得到的错误: JAVAlang.IllegalArgumentException:参数数量错误

  • 我使用等代码从weather API获取数据,但遇到了两个错误: 因此,我在此网站上搜索类似的错误,并在https://stackoverflow.com/a/35053689/13899010找到了部分解决方案,我使用这个解决方案是因为我不想使用资源字符串来更改显示的数据。将此添加到string.xml中:然后将代码更改为: 现在,我得到了以下错误。我在string.format()中看到And

  • 问题内容: 我在Access DB的VB应用程序中有此查询: 它给出了我无法解决的以下问题… “查询表达式’ISNULL(a.faultCount,0’)中的函数使用的参数数量错误。” 我要实现的只是将值设置为零,这意味着在特定区域中没有故障。 谢谢你 问题答案: 我想补充我的两分钱,而我喜欢NZ()的简单的语法,如果你寻求无故障性能,既ISNULL()和新西兰()应该有利于为NULL来避免: 。

  • 我试图使用来获得一个基本的示例。但这是我收到的错误:

  • 我有以下问题,当我运行testng套件时,我得到以下错误: “参数'paramName'是@test on method testMethod所必需的,但尚未标记为@OPtional o或已定义”。这里的所有问题都是正确的,这是我试图执行的代码的一部分: 如果此测试是,则扩展自基本测试,该测试在测试之前调用了以下方法 我不包括驱动程序被实例化的情况。如果有人知道会发生什么的话。

  • 这里变量x(在主)的值是6,这是正确的,但当我写同样的事情在system.out.println== 当我尝试在print语句中放入x时,它工作得很好。但我想知道它给出错误的原因。 错误: