请问这是什么原因啊,那个Person.java可是没有的包的(加包后也有问题)
   这该怎么解决~~   郁闷了好久,现请各位高手帮帮看看该咋改~~

解决方案 »

  1.   

    改成如下试试
     
    CSDN - 专家门诊 - Java J2EE / EJB / JMS问题
    回复 | 推荐 | 收藏 | 专题 | 公告 | 管理 | 关闭窗口 
    主  题:  大家来帮我解决一个关于类装载的问题(报:Exception in thread "main" java.lang.SecurityException)
    作  者:  mumhunter (hunter)
    等  级: 
    信 誉 值:  100
    所属论坛:  Java J2EE / EJB / JMS
    问题点数:  20
    回复次数:  1
    发表时间:  2006-07-07 11:45:33


    public class Person {private String name;public String getName() {
    return name;
    }public void setName(String name) {
    this.name = name;
    }
    public static void main(String[] args)
    {
    Person p = new Person();
    p.setName("zhoujm");
    System.out.println(p.getName());
    }
    }
    这是一个java类,我把它编译成Person.class后放在f盘 路径:F:/Person.class
    import java.io.DataInputStream;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.IOException;
    import java.lang.reflect.InvocationTargetException;
    import java.lang.reflect.Method;
    import java.security.GeneralSecurityException;
    import java.util.Hashtable;public class ClassLoadTest extends ClassLoader{
    public ClassLoadTest()
    {}public Class loadClass(String name, boolean resolve ) throws ClassNotFoundException
    {// try {
    //我们要创建的Class对象
    Class clasz = null;//必需的步骤1:如果类已经在系统缓冲之中,
    //我们不必再次装入它
    clasz = findLoadedClass(name );if (clasz != null)
    return clasz;if (clasz == null)
    {
        try
        {
           clasz = findSystemClass( name );
         }
         catch (ClassNotFoundException ce)
         {
         byte classData[]=loadClassData("f:/Person.class");
    System.out.println(classData.length);
    if (classData != null)
    {
    //成功读取字节码数据,现在把它转换成一个Class对象
    clasz = defineClass( name, classData, 0, classData.length );
    }
         }
    }
    //必需的步骤3:如有必要,则装入相关的类
    if (resolve && clasz != null)
    resolveClass( clasz );System.out.println("类已装载");return clasz;}
      

  2.   

    拷错了,是下面:
    clasz = findLoadedClass(name );if (clasz != null)
    return clasz;if (clasz == null)
    {
    try
    {
    clasz = findSystemClass( name );
    }
    catch (ClassNotFoundException ce)
    {
    byte classData[]=loadClassData("f:/Person.class");
    System.out.println(classData.length);
    if (classData != null)
    {
    //成功读取字节码数据,现在把它转换成一个Class对象
    clasz = defineClass( name, classData, 0, classData.length );
    }
      

  3.   

    就是说对load类的操作,先由系统Loader去处理(譬如load 入Person之后紧接着需要load java.lang.String类),如果还出问题,你运行时虚拟机VM参数加上
    -verbose:class,从输出可以看看在加载哪个类的时候出错我的BLOG:http://ayufox.blogcn.com/
      

  4.   

    非常感谢  rosifox(下着鱼的天)  的回答~
      经过你的修改,现已成功运行,再次谢谢了,现给你全分~