How to load jar's whole class by byte array?

I am trying to load a class into a byte array.
MainC, Loader, ClassByte, and byteClassLoader are all to load classes.

MainC is start point.

public class MainC
    {
        public static void main(String[] args) {
            Loader loc = new Loader();
            loc.load();
        }
    }

Here we load the class and invoke the method.

public class Loader {
    public void load() {
        for (String classname : ClassByte.getClassNames()) 
        {
            byteClassLoader cl =new byteClassLoader(ClassByte.getBytes(classname));
            Class clz =  cl.findClass(classname);
            if (classname.equals("a.b.Startclass"))
                clz.getDeclaredMethod("startmethod", null).invoke(clz.newInstance(), null);
        }
    }
}

Here we can get the class and byte array to load.

public class ClassByte 
{
       public static byte[] getBytes(String name)
       {
        if(name.equals(getClassNames()[0]))
            return new byte[] {(byte)0xCA,(byte)0xFE,(byte)0xBA,(byte)0xBE,(byte)0x00,(byte)0x00,(byte)0x00,(byte)0x34,(byte)0x00,(byte)0x1F,(byte)0x07,(byte)0x00,(byte)0x02,(byte)0x01,(byte)0x00,(byte)0x11,(byte)0x61,(byte)0x2F,(byte)0x62,(byte)0x2F,(byte)0x73,(byte)0x79,(byte)0x73,(byte)0x74,(byte)0x65,(byte)0x6D,(byte)0x6D,(byte)0x65,(byte)0x73,(byte)0x73,(byte)0x61,(byte)0x67,(byte)0x65,(byte)0x07,(byte)0x00,(byte)0x04,(byte)0x01,(byte)0x00,(byte)0x10,(byte)0x6A,(byte)0x61,(byte)0x76,(byte)0x61,(byte)0x2F,(byte)0x6C,(byte)0x61,(byte)0x6E,(byte)0x67,(byte)0x2F,(byte)0x4F,(byte)0x62,(byte)0x6A,(byte)0x65,(byte)0x63,(byte)0x74,(byte)0x01,(byte)0x00,(byte)0x06,(byte)0x3C,(byte)0x69,(byte)0x6E,(byte)0x69,(byte)0x74,(byte)0x3E,(byte)0x01,(byte)0x00,(byte)0x03,(byte)0x28,(byte)0x29,(byte)0x56,(byte)0x01,(byte)0x00,(byte)0x04,(byte)0x43,(byte)0x6F,(byte)0x64,(byte)0x65,(byte)0x0A,(byte)0x00,(byte)0x03,(byte)0x00,(byte)0x09,(byte)0x0C,(byte)0x00,(byte)0x05,(byte)0x00,(byte)0x06,(byte)0x01,(byte)0x00,(byte)0x0F,(byte)0x4C,(byte)0x69,(byte)0x6E,(byte)0x65,(byte)0x4E,(byte)0x75,(byte)0x6D,(byte)0x62,(byte)0x65,(byte)0x72,(byte)0x54,(byte)0x61,(byte)0x62,(byte)0x6C,(byte)0x65,(byte)0x01,(byte)0x00,(byte)0x12,(byte)0x4C,(byte)0x6F,(byte)0x63,(byte)0x61,(byte)0x6C,(byte)0x56,(byte)0x61,(byte)0x72,(byte)0x69,(byte)0x61,(byte)0x62,(byte)0x6C,(byte)0x65,(byte)0x54,(byte)0x61,(byte)0x62,(byte)0x6C,(byte)0x65,(byte)0x01,(byte)0x00,(byte)0x04,(byte)0x74,(byte)0x68,(byte)0x69,(byte)0x73,(byte)0x01,(byte)0x00,(byte)0x13,(byte)0x4C,(byte)0x61,(byte)0x2F,(byte)0x62,(byte)0x2F,(byte)0x73,(byte)0x79,(byte)0x73,(byte)0x74,(byte)0x65,(byte)0x6D,(byte)0x6D,(byte)0x65,(byte)0x73,(byte)0x73,(byte)0x61,(byte)0x67,(byte)0x65,(byte)0x3B,(byte)0x01,(byte)0x00,(byte)0x07,(byte)0x6D,(byte)0x65,(byte)0x73,(byte)0x73,(byte)0x61,(byte)0x67,(byte)0x65,(byte)0x09,(byte)0x00,(byte)0x10,(byte)0x00,(byte)0x12,(byte)0x07,(byte)0x00,(byte)0x11,(byte)0x01,(byte)0x00,(byte)0x10,(byte)0x6A,(byte)0x61,(byte)0x76,(byte)0x61,(byte)0x2F,(byte)0x6C,(byte)0x61,(byte)0x6E,(byte)0x67,(byte)0x2F,(byte)0x53,(byte)0x79,(byte)0x73,(byte)0x74,(byte)0x65,(byte)0x6D,(byte)0x0C,(byte)0x00,(byte)0x13,(byte)0x00,(byte)0x14,(byte)0x01,(byte)0x00,(byte)0x03,(byte)0x6F,(byte)0x75,(byte)0x74,(byte)0x01,(byte)0x00,(byte)0x15,(byte)0x4C,(byte)0x6A,(byte)0x61,(byte)0x76,(byte)0x61,(byte)0x2F,(byte)0x69,(byte)0x6F,(byte)0x2F,(byte)0x50,(byte)0x72,(byte)0x69,(byte)0x6E,(byte)0x74,(byte)0x53,(byte)0x74,(byte)0x72,(byte)0x65,(byte)0x61,(byte)0x6D,(byte)0x3B,(byte)0x08,(byte)0x00,(byte)0x16,(byte)0x01,(byte)0x00,(byte)0x10,(byte)0x5B,(byte)0x53,(byte)0x59,(byte)0x53,(byte)0x54,(byte)0x45,(byte)0x4D,(byte)0x5D,(byte)0x20,(byte)0x4D,(byte)0x65,(byte)0x73,(byte)0x73,(byte)0x61,(byte)0x67,(byte)0x65,(byte)0x0A,(byte)0x00,(byte)0x18,(byte)0x00,(byte)0x1A,(byte)0x07,(byte)0x00,(byte)0x19,(byte)0x01,(byte)0x00,(byte)0x13,(byte)0x6A,(byte)0x61,(byte)0x76,(byte)0x61,(byte)0x2F,(byte)0x69,(byte)0x6F,(byte)0x2F,(byte)0x50,(byte)0x72,(byte)0x69,(byte)0x6E,(byte)0x74,(byte)0x53,(byte)0x74,(byte)0x72,(byte)0x65,(byte)0x61,(byte)0x6D,(byte)0x0C,(byte)0x00,(byte)0x1B,(byte)0x00,(byte)0x1C,(byte)0x01,(byte)0x00,(byte)0x07,(byte)0x70,(byte)0x72,(byte)0x69,(byte)0x6E,(byte)0x74,(byte)0x6C,(byte)0x6E,(byte)0x01,(byte)0x00,(byte)0x15,(byte)0x28,(byte)0x4C,(byte)0x6A,(byte)0x61,(byte)0x76,(byte)0x61,(byte)0x2F,(byte)0x6C,(byte)0x61,(byte)0x6E,(byte)0x67,(byte)0x2F,(byte)0x53,(byte)0x74,(byte)0x72,(byte)0x69,(byte)0x6E,(byte)0x67,(byte)0x3B,(byte)0x29,(byte)0x56,(byte)0x01,(byte)0x00,(byte)0x0A,(byte)0x53,(byte)0x6F,(byte)0x75,(byte)0x72,(byte)0x63,(byte)0x65,(byte)0x46,(byte)0x69,(byte)0x6C,(byte)0x65,(byte)0x01,(byte)0x00,(byte)0x12,(byte)0x73,(byte)0x79,(byte)0x73,(byte)0x74,(byte)0x65,(byte)0x6D,(byte)0x6D,(byte)0x65,(byte)0x73,(byte)0x73,(byte)0x61,(byte)0x67,(byte)0x65,(byte)0x2E,(byte)0x6A,(byte)0x61,(byte)0x76,(byte)0x61,(byte)0x00,(byte)0x21,(byte)0x00,(byte)0x01,(byte)0x00,(byte)0x03,(byte)0x00,(byte)0x00,(byte)0x00,(byte)0x00,(byte)0x00,(byte)0x02,(byte)0x00,(byte)0x01,(byte)0x00,(byte)0x05,(byte)0x00,(byte)0x06,(byte)0x00,(byte)0x01,(byte)0x00,(byte)0x07,(byte)0x00,(byte)0x00,(byte)0x00,(byte)0x2F,(byte)0x00,(byte)0x01,(byte)0x00,(byte)0x01,(byte)0x00,(byte)0x00,(byte)0x00,(byte)0x05,(byte)0x2A,(byte)0xB7,(byte)0x00,(byte)0x08,(byte)0xB1,(byte)0x00,(byte)0x00,(byte)0x00,(byte)0x02,(byte)0x00,(byte)0x0A,(byte)0x00,(byte)0x00,(byte)0x00,(byte)0x06,(byte)0x00,(byte)0x01,(byte)0x00,(byte)0x00,(byte)0x00,(byte)0x02,(byte)0x00,(byte)0x0B,(byte)0x00,(byte)0x00,(byte)0x00,(byte)0x0C,(byte)0x00,(byte)0x01,(byte)0x00,(byte)0x00,(byte)0x00,(byte)0x05,(byte)0x00,(byte)0x0C,(byte)0x00,(byte)0x0D,(byte)0x00,(byte)0x00,(byte)0x00,(byte)0x01,(byte)0x00,(byte)0x0E,(byte)0x00,(byte)0x06,(byte)0x00,(byte)0x01,(byte)0x00,(byte)0x07,(byte)0x00,(byte)0x00,(byte)0x00,(byte)0x37,(byte)0x00,(byte)0x02,(byte)0x00,(byte)0x01,(byte)0x00,(byte)0x00,(byte)0x00,(byte)0x09,(byte)0xB2,(byte)0x00,(byte)0x0F,(byte)0x12,(byte)0x15,(byte)0xB6,(byte)0x00,(byte)0x17,(byte)0xB1,(byte)0x00,(byte)0x00,(byte)0x00,(byte)0x02,(byte)0x00,(byte)0x0A,(byte)0x00,(byte)0x00,(byte)0x00,(byte)0x0A,(byte)0x00,(byte)0x02,(byte)0x00,(byte)0x00,(byte)0x00,(byte)0x06,(byte)0x00,(byte)0x08,(byte)0x00,(byte)0x07,(byte)0x00,(byte)0x0B,(byte)0x00,(byte)0x00,(byte)0x00,(byte)0x0C,(byte)0x00,(byte)0x01,(byte)0x00,(byte)0x00,(byte)0x00,(byte)0x09,(byte)0x00,(byte)0x0C,(byte)0x00,(byte)0x0D,(byte)0x00,(byte)0x00,(byte)0x00,(byte)0x01,(byte)0x00,(byte)0x1D,(byte)0x00,(byte)0x00,(byte)0x00,(byte)0x02,(byte)0x00,(byte)0x1E};
        else if(name.equals(getClassNames()[1]))
            return new byte[] {(byte)0xCA,(byte)0xFE,(byte)0xBA,(byte)0xBE,(byte)0x00,(byte)0x00,(byte)0x00,(byte)0x34,(byte)0x00,(byte)0x25,(byte)0x07,(byte)0x00,(byte)0x02,(byte)0x01,(byte)0x00,(byte)0x0E,(byte)0x61,(byte)0x2F,(byte)0x62,(byte)0x2F,(byte)0x53,(byte)0x74,(byte)0x61,(byte)0x72,(byte)0x74,(byte)0x63,(byte)0x6C,(byte)0x61,(byte)0x73,(byte)0x73,(byte)0x07,(byte)0x00,(byte)0x04,(byte)0x01,(byte)0x00,(byte)0x10,(byte)0x6A,(byte)0x61,(byte)0x76,(byte)0x61,(byte)0x2F,(byte)0x6C,(byte)0x61,(byte)0x6E,(byte)0x67,(byte)0x2F,(byte)0x4F,(byte)0x62,(byte)0x6A,(byte)0x65,(byte)0x63,(byte)0x74,(byte)0x01,(byte)0x00,(byte)0x06,(byte)0x3C,(byte)0x69,(byte)0x6E,(byte)0x69,(byte)0x74,(byte)0x3E,(byte)0x01,(byte)0x00,(byte)0x03,(byte)0x28,(byte)0x29,(byte)0x56,(byte)0x01,(byte)0x00,(byte)0x04,(byte)0x43,(byte)0x6F,(byte)0x64,(byte)0x65,(byte)0x0A,(byte)0x00,(byte)0x03,(byte)0x00,(byte)0x09,(byte)0x0C,(byte)0x00,(byte)0x05,(byte)0x00,(byte)0x06,(byte)0x01,(byte)0x00,(byte)0x0F,(byte)0x4C,(byte)0x69,(byte)0x6E,(byte)0x65,(byte)0x4E,(byte)0x75,(byte)0x6D,(byte)0x62,(byte)0x65,(byte)0x72,(byte)0x54,(byte)0x61,(byte)0x62,(byte)0x6C,(byte)0x65,(byte)0x01,(byte)0x00,(byte)0x12,(byte)0x4C,(byte)0x6F,(byte)0x63,(byte)0x61,(byte)0x6C,(byte)0x56,(byte)0x61,(byte)0x72,(byte)0x69,(byte)0x61,(byte)0x62,(byte)0x6C,(byte)0x65,(byte)0x54,(byte)0x61,(byte)0x62,(byte)0x6C,(byte)0x65,(byte)0x01,(byte)0x00,(byte)0x04,(byte)0x74,(byte)0x68,(byte)0x69,(byte)0x73,(byte)0x01,(byte)0x00,(byte)0x10,(byte)0x4C,(byte)0x61,(byte)0x2F,(byte)0x62,(byte)0x2F,(byte)0x53,(byte)0x74,(byte)0x61,(byte)0x72,(byte)0x74,(byte)0x63,(byte)0x6C,(byte)0x61,(byte)0x73,(byte)0x73,(byte)0x3B,(byte)0x01,(byte)0x00,(byte)0x0B,(byte)0x73,(byte)0x74,(byte)0x61,(byte)0x72,(byte)0x74,(byte)0x6D,(byte)0x65,(byte)0x74,(byte)0x68,(byte)0x6F,(byte)0x64,(byte)0x09,(byte)0x00,(byte)0x10,(byte)0x00,(byte)0x12,(byte)0x07,(byte)0x00,(byte)0x11,(byte)0x01,(byte)0x00,(byte)0x10,(byte)0x6A,(byte)0x61,(byte)0x76,(byte)0x61,(byte)0x2F,(byte)0x6C,(byte)0x61,(byte)0x6E,(byte)0x67,(byte)0x2F,(byte)0x53,(byte)0x79,(byte)0x73,(byte)0x74,(byte)0x65,(byte)0x6D,(byte)0x0C,(byte)0x00,(byte)0x13,(byte)0x00,(byte)0x14,(byte)0x01,(byte)0x00,(byte)0x03,(byte)0x6F,(byte)0x75,(byte)0x74,(byte)0x01,(byte)0x00,(byte)0x15,(byte)0x4C,(byte)0x6A,(byte)0x61,(byte)0x76,(byte)0x61,(byte)0x2F,(byte)0x69,(byte)0x6F,(byte)0x2F,(byte)0x50,(byte)0x72,(byte)0x69,(byte)0x6E,(byte)0x74,(byte)0x53,(byte)0x74,(byte)0x72,(byte)0x65,(byte)0x61,(byte)0x6D,(byte)0x3B,(byte)0x08,(byte)0x00,(byte)0x16,(byte)0x01,(byte)0x00,(byte)0x0B,(byte)0x53,(byte)0x74,(byte)0x61,(byte)0x72,(byte)0x74,(byte)0x4D,(byte)0x65,(byte)0x74,(byte)0x68,(byte)0x6F,(byte)0x64,(byte)0x0A,(byte)0x00,(byte)0x18,(byte)0x00,(byte)0x1A,(byte)0x07,(byte)0x00,(byte)0x19,(byte)0x01,(byte)0x00,(byte)0x13,(byte)0x6A,(byte)0x61,(byte)0x76,(byte)0x61,(byte)0x2F,(byte)0x69,(byte)0x6F,(byte)0x2F,(byte)0x50,(byte)0x72,(byte)0x69,(byte)0x6E,(byte)0x74,(byte)0x53,(byte)0x74,(byte)0x72,(byte)0x65,(byte)0x61,(byte)0x6D,(byte)0x0C,(byte)0x00,(byte)0x1B,(byte)0x00,(byte)0x1C,(byte)0x01,(byte)0x00,(byte)0x07,(byte)0x70,(byte)0x72,(byte)0x69,(byte)0x6E,(byte)0x74,(byte)0x6C,(byte)0x6E,(byte)0x01,(byte)0x00,(byte)0x15,(byte)0x28,(byte)0x4C,(byte)0x6A,(byte)0x61,(byte)0x76,(byte)0x61,(byte)0x2F,(byte)0x6C,(byte)0x61,(byte)0x6E,(byte)0x67,(byte)0x2F,(byte)0x53,(byte)0x74,(byte)0x72,(byte)0x69,(byte)0x6E,(byte)0x67,(byte)0x3B,(byte)0x29,(byte)0x56,(byte)0x07,(byte)0x00,(byte)0x1E,(byte)0x01,(byte)0x00,(byte)0x11,(byte)0x61,(byte)0x2F,(byte)0x62,(byte)0x2F,(byte)0x73,(byte)0x79,(byte)0x73,(byte)0x74,(byte)0x65,(byte)0x6D,(byte)0x6D,(byte)0x65,(byte)0x73,(byte)0x73,(byte)0x61,(byte)0x67,(byte)0x65,(byte)0x0A,(byte)0x00,(byte)0x1D,(byte)0x00,(byte)0x09,(byte)0x0A,(byte)0x00,(byte)0x1D,(byte)0x00,(byte)0x21,(byte)0x0C,(byte)0x00,(byte)0x22,(byte)0x00,(byte)0x06,(byte)0x01,(byte)0x00,(byte)0x07,(byte)0x6D,(byte)0x65,(byte)0x73,(byte)0x73,(byte)0x61,(byte)0x67,(byte)0x65,(byte)0x01,(byte)0x00,(byte)0x0A,(byte)0x53,(byte)0x6F,(byte)0x75,(byte)0x72,(byte)0x63,(byte)0x65,(byte)0x46,(byte)0x69,(byte)0x6C,(byte)0x65,(byte)0x01,(byte)0x00,(byte)0x0F,(byte)0x53,(byte)0x74,(byte)0x61,(byte)0x72,(byte)0x74,(byte)0x63,(byte)0x6C,(byte)0x61,(byte)0x73,(byte)0x73,(byte)0x2E,(byte)0x6A,(byte)0x61,(byte)0x76,(byte)0x61,(byte)0x00,(byte)0x21,(byte)0x00,(byte)0x01,(byte)0x00,(byte)0x03,(byte)0x00,(byte)0x00,(byte)0x00,(byte)0x00,(byte)0x00,(byte)0x02,(byte)0x00,(byte)0x01,(byte)0x00,(byte)0x05,(byte)0x00,(byte)0x06,(byte)0x00,(byte)0x01,(byte)0x00,(byte)0x07,(byte)0x00,(byte)0x00,(byte)0x00,(byte)0x2F,(byte)0x00,(byte)0x01,(byte)0x00,(byte)0x01,(byte)0x00,(byte)0x00,(byte)0x00,(byte)0x05,(byte)0x2A,(byte)0xB7,(byte)0x00,(byte)0x08,(byte)0xB1,(byte)0x00,(byte)0x00,(byte)0x00,(byte)0x02,(byte)0x00,(byte)0x0A,(byte)0x00,(byte)0x00,(byte)0x00,(byte)0x06,(byte)0x00,(byte)0x01,(byte)0x00,(byte)0x00,(byte)0x00,(byte)0x02,(byte)0x00,(byte)0x0B,(byte)0x00,(byte)0x00,(byte)0x00,(byte)0x0C,(byte)0x00,(byte)0x01,(byte)0x00,(byte)0x00,(byte)0x00,(byte)0x05,(byte)0x00,(byte)0x0C,(byte)0x00,(byte)0x0D,(byte)0x00,(byte)0x00,(byte)0x00,(byte)0x01,(byte)0x00,(byte)0x0E,(byte)0x00,(byte)0x06,(byte)0x00,(byte)0x01,(byte)0x00,(byte)0x07,(byte)0x00,(byte)0x00,(byte)0x00,(byte)0x45,(byte)0x00,(byte)0x02,(byte)0x00,(byte)0x01,(byte)0x00,(byte)0x00,(byte)0x00,(byte)0x13,(byte)0xB2,(byte)0x00,(byte)0x0F,(byte)0x12,(byte)0x15,(byte)0xB6,(byte)0x00,(byte)0x17,(byte)0xBB,(byte)0x00,(byte)0x1D,(byte)0x59,(byte)0xB7,(byte)0x00,(byte)0x1F,(byte)0xB6,(byte)0x00,(byte)0x20,(byte)0xB1,(byte)0x00,(byte)0x00,(byte)0x00,(byte)0x02,(byte)0x00,(byte)0x0A,(byte)0x00,(byte)0x00,(byte)0x00,(byte)0x0E,(byte)0x00,(byte)0x03,(byte)0x00,(byte)0x00,(byte)0x00,(byte)0x06,(byte)0x00,(byte)0x08,(byte)0x00,(byte)0x07,(byte)0x00,(byte)0x12,(byte)0x00,(byte)0x08,(byte)0x00,(byte)0x0B,(byte)0x00,(byte)0x00,(byte)0x00,(byte)0x0C,(byte)0x00,(byte)0x01,(byte)0x00,(byte)0x00,(byte)0x00,(byte)0x13,(byte)0x00,(byte)0x0C,(byte)0x00,(byte)0x0D,(byte)0x00,(byte)0x00,(byte)0x00,(byte)0x01,(byte)0x00,(byte)0x23,(byte)0x00,(byte)0x00,(byte)0x00,(byte)0x02,(byte)0x00,(byte)0x24};
        return null;
       }

        public static String[] getClassNames() 
        {
            return new String[] {"a.b.systemmessage","a.b.Startclass"};
        }
}

The ClassLoader with bytes

public class byteClassLoader extends ClassLoader 
{
    private Hashtable classes = new Hashtable(); //used to cache already defined classes
    private byte[] cbytes;
    public byteClassLoader(byte[] bytes) 
    {
        super(byteClassLoader.class.getClassLoader()); //calls the parent class loader's constructor
        this.cbytes = bytes;
    }

    public Class loadClass(String className) throws ClassNotFoundException {
        return findClass(className);
    }

    public Class findClass(String className) {
        byte classByte[];
        Class result = null;

        result = (Class) classes.get(className); //checks in cached classes
        if (result != null) {
            return result;
        }

        try {
            return findSystemClass(className);
        } catch (Exception e) 
        {
        }

        try
        {
            classByte = cbytes;
            result = defineClass(className, classByte, 0, classByte.length, null);
            classes.put(className, result);
            cbytes = new byte[]{};
            return result;
        }catch(Exception e)
        {
            return null;
        }
    }

}

Now below is classes that i want to excute.

Startclass’s startmethod() is start point.

public class Startclass 
{
    public void startmethod()
    {
        System.out.println("StartMethod");
        new systemmessage().message();
    }
}

and

public class systemmessage {

    public void message()
    {
        System.out.println("[SYSTEM] Message");
    }
}

but here is exceptions.

StartMethod

Exception in thread “main” java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at a.Loader.load(Loader.java:12)
at a.MainC.main(MainC.java:10)

Caused by: java.lang.ClassFormatError: Truncated class file
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:763)
at a.byteClassLoader.findClass(byteClassLoader.java:38)
at a.byteClassLoader.loadClass(byteClassLoader.java:17)
at a.b.Startclass.startmethod(Startclass.java:7)
… 6 more

Thankyou.