[英]Invoking a static method with java reflection library
我试图通过java反射库调用以下静态方法。
import java.net.InetAddress;
import java.net.UnknownHostException;
public class ah
{
static void a()
{
try
{
Client.dU = 10;
Client.dV = 0;
Client.dX = true;
cp.d = 32;
cp.a(InetAddress.getLocalHost());
Client.iq = Client.E();
Client.ir = w.a();
Client.is = 2019030189;
}
catch (UnknownHostException localUnknownHostException) {}
}
}
我当前的代码如下
public void invokeInit() throws NoSuchMethodException, SecurityException, IllegalAccessException,
IllegalArgumentException, InvocationTargetException {
Class<?> initClass = loader.loadClass("ah");
Method initMethod = initClass.getDeclaredMethod("a", null);
initMethod.invoke(null, new Object[] {});
}
它给我以下错误
java.lang.IllegalAccessException: Class org.baiocchi.client.reflection.Game can not access a member of class ah with modifiers "static"
at sun.reflect.Reflection.ensureMemberAccess(Reflection.java:102)
at java.lang.reflect.AccessibleObject.slowCheckMemberAccess(AccessibleObject.java:296)
at java.lang.reflect.AccessibleObject.checkAccess(AccessibleObject.java:288)
at java.lang.reflect.Method.invoke(Method.java:491)
at org.baiocchi.client.reflection.Game.invokeInit(Game.java:28)
at org.baiocchi.client.reflection.Game.getApplet(Game.java:33)
at org.baiocchi.client.Engine.start(Engine.java:21)
at org.baiocchi.client.Booter.main(Booter.java:6)
预先感谢您的任何帮助!
java.lang.IllegalAccessException:类org.baiocchi.client.reflection.Game无法使用修饰符“ static”访问类ah的成员
如果要调用私有方法或其他无法访问的方法(通常是package private
方法,而不是从类的包中调用它),则抛出IllegalAccessException
。
您可以在Method
对象上调用public void setAccessible(boolean flag)
以消除此约束:
initMethod.setAccessible(true);
将此对象的可访问标志设置为指示的布尔值。 值为true表示反射的对象在使用时应禁止Java语言访问检查。 值为false表示所反射的对象应强制执行Java语言访问检查。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.