建议不要这样用,一般来说你不可能把所有的 class 类加密吧,没有那种必要,只要若干核心类加密就可以了,那么只需要使用 Class 类的 forName 方法,里面制定你的 classloader 就可以了

解决方案 »

  1.   

    只要用你自己的ClassLoader类里面的load方法就行了啊
    其实就是和默认的loader一样用
      

  2.   

    现在已经写好了带解密切继承ClassLoader的类
    ----------------------
    假定继承ClassLoader的类名为MyClass,假定你解密的类package为“my.test.MyTest”,并且假定MyTest里有个方法是public static void doMethod(String s){System.out.println(s);}
    //开始:
    MyClass mc=new MyClass();
    byte[] code=...//得到解密后的MyTest.class
    Class cls = mc.defineClass("my.test.MyTest", code, 0, code.length);
    String s="随便写....";
    java.lang.reflect.Method m=cls.getMethod("doMethod",new Class[]{s.getClass()});
    m.invoke(null,new Object[]{s});//打印s