java.lang.illegalargumentexception:参数数目错误

nwlls2ji  于 2021-06-30  发布在  Java
关注(0)|答案(2)|浏览(396)

我在具有不可见contstructor类(string var0、logger var1、loggercontext var2)的最后一个类中尝试access 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)
cidc1ykv

cidc1ykv1#

你只能用 var0.newInstance() 用它的args。
只需传递 String , Logger 以及 LoggerContextnewInstance() 方法。

js5cn81o

js5cn81o2#

解决了的!然后您应该从logger manager/factory获取logger的示例,比如loggerfactory.getlogger(“mylogger”).info(“message”),其中logger的名称通常是类的名称,但不需要这样。-@戈托菲尔
编辑:对不起,我不知道如何标记正确的答案,这里很新。

相关问题