繁体   English   中英

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

[英]Java java.lang.IllegalArgumentException: wrong number of arguments

我尝试在具有不可见构造函数 Class(String var0, Logger var1, LoggerContext var2) 的最终类中访问 info(String var) 方法

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)

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

只需将StringLoggerLoggerContext对象传递给newInstance()方法。

解决了! 然后你应该从记录器管理器/工厂获取记录器的实例,比如 LoggerFactory.getLogger("myLogger").info("message") 其中记录器的名称通常是类的名称,但它不需要是。 - @GotoFinal

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM