A.class文件内容为:
class A{
public int i=90;}B.java文件为:import java.io.*;
class B extends ClassLoader{
public static void main(String[] s) throws Exception{
FileInputStream in=new FileInputStream("A.class");
byte[] b=new byte[1024];
int cout=in.read(b);
Class nc=new B().defineClass("A",b,0,cout);
A a=(A)nc.newInstance();
}
}
编译通过了,但运行时出现下面异常:
Exception in thread "main" java.lang.IllegalAccessException: Class B can not acc
ess a member of class A with modifiers "public"
at sun.reflect.Reflection.ensureMemberAccess(Reflection.java:65)
at java.lang.Class.newInstance0(Class.java:344)
at java.lang.Class.newInstance(Class.java:303)
at B.main(B.java:10)
该怎么解决啊,请大侠们帮帮忙啊,谢谢了!!!
class A{
public int i=90;}B.java文件为:import java.io.*;
class B extends ClassLoader{
public static void main(String[] s) throws Exception{
FileInputStream in=new FileInputStream("A.class");
byte[] b=new byte[1024];
int cout=in.read(b);
Class nc=new B().defineClass("A",b,0,cout);
A a=(A)nc.newInstance();
}
}
编译通过了,但运行时出现下面异常:
Exception in thread "main" java.lang.IllegalAccessException: Class B can not acc
ess a member of class A with modifiers "public"
at sun.reflect.Reflection.ensureMemberAccess(Reflection.java:65)
at java.lang.Class.newInstance0(Class.java:344)
at java.lang.Class.newInstance(Class.java:303)
at B.main(B.java:10)
该怎么解决啊,请大侠们帮帮忙啊,谢谢了!!!
.....
public 的类里的main才能够被执行
.....
public 的类里的main才能够被执行
与这个无关,楼上是对的,A必须定义为public
系统会默认这两个类在一个默认包中啊,nc.newInstance();类B应该能够生成类A的实例啊,为什么回出现先前哪个异常啊,
加载的同一个CLASS虚拟机并不认为是一样,关于加载器(ClassLoader),可以见我的blog
http://ayufox.blogcn.com/
有一篇对ClassLoader结构有做介绍