E:Plug.jar 是一个单独的Plug.class (没上层包)打的jar import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
public class CompilingClassLoader extends ClassLoader {
public Class getClas(String filename,String classname) throws IOException {
File file = new File(filename);
try
{ System.out.println("be to the Cload");
System.out.println("classname:"+classname);
Class ctmp = this.findLoadedClass(classname);
System.out.println(ctmp.getName()+" is load");
System.out.println("over!!");
return ctmp;
}
catch(Exception exception)
{
System.out.println("memory is null");
}
long len = file.length();
byte[] raw = new byte[(int)len];
FileInputStream fis = new FileInputStream(file);
int r = fis.read(raw);
if(r!=len) throw new IOException ("Cat not read all"+r+"!="+len);
fis.close();
return defineClass("classname",raw,0,raw.length);
}
public static void main(String[] args) throws IOException {
String s = "E:/Plug.jar";
File file = new File(s);
CompilingClassLoader ccl = new CompilingClassLoader();
Class clas = ccl.getClas(s,"Plug.class");
}
}
Exception in thread "main" java.lang.ClassFormatError: Incompatible magic value 1347093252 in class file classname
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:621)
at java.lang.ClassLoader.defineClass(ClassLoader.java:466)
at CompilingClassLoader.getClas(CompilingClassLoader.java:28)
at CompilingClassLoader.main(CompilingClassLoader.java:35)
exceptionclassloader
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货