1. A protecting method of Java source code, wherein when a first initiating class is invoked, the method comprises: S 1 , the first initiating class reading first cipher data to a memory, decrypting the first cipher data to obtain first plain data, and defining the first plain data as a class loader, wherein the first initiating class is an initiating class of Java program and the first cipher data is data obtained by encrypting the bytecode file of the class loader; S 2 , the class loader reading second cipher data to the memory, decrypting the second cipher data to obtain second plain data, and defining the second plain data as a first class, wherein the first class is a class which is run by a Java virtual machine, and the suffix of the first class is .class, and the second cipher data is obtained by encrypting the bytecode file of the first class; S 3 , the class loader loading a second initiating class to the memory, wherein the second initiating class is an original class in jar packet of Java program; and S 4 , the class loader loading the first class to the Java virtual machine so that the Java virtual machine can invoke a main interface in the second initiating class and run the Java program, wherein the step S 1 comprises: S 11 , the first initiating class reading the first cipher data to the memory; S 12 , the first initiating class loading a local first dynamic library to the memory; S 13 , the first initiating class invoking a third interface in the first dynamic library; S 14 , the first initiating class transferring an address of the first cipher data in the memory into the third interface in the first dynamic library; S 15 , the third interface in the first dynamic library decrypting the first cipher data to obtain the first plain data; and S 16 , the third interface in the first dynamic library invoking a define class interface of the Java virtual machine to define the first plain data as the class loader.