如果在 C:\ 下面有一个 Findme.class 的话,是不是应该如下使用呢?
后面的参数是什么呢 classForname("C:\\Findme.class")为什么调试的时候总是没加载成功呢,都是 null 啊
public class PlanLoader extends ClassLoader { /**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
PlanLoader pl = new PlanLoader();
Class c = pl.loadClass("C:\\Findme", true);
}
public Class loadClass(String name, boolean resolve ) {
Class clas = null;
clas = this.findLoadedClass(name);
if( clas != null ) {
System.out.println(name);
return clas;
}
}
后面的参数是什么呢 classForname("C:\\Findme.class")为什么调试的时候总是没加载成功呢,都是 null 啊
public class PlanLoader extends ClassLoader { /**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
PlanLoader pl = new PlanLoader();
Class c = pl.loadClass("C:\\Findme", true);
}
public Class loadClass(String name, boolean resolve ) {
Class clas = null;
clas = this.findLoadedClass(name);
if( clas != null ) {
System.out.println(name);
return clas;
}
}
classpath=".;C:\Findme"
就可以了。
class.forName()这个的参数是不带class后缀的完整类名。
想加载C:\abc.class 可是没有加载成啊,怎么回事啊,//加载部分的关键代码,帮忙再看看了
URL url = null;
try {
url = new URL("file:C:/");
} catch (MalformedURLException e3) {
// TODO Auto-generated catch block
e3.printStackTrace();
} URLClassLoader urlCL = new URLClassLoader(new URL[]{url});
Class clazz = null;
try {
clazz = urlCL.loadClass("Try.Findme");
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}// abc.java部分的代码
package Try;public class Findme {
public void ok(){
System.out.print("you hava find me out");
}
public static void main(String[] args) {
}
}
try{ URL url = new URL("file:/d:/test/lib/"); URLClassLoader urlCL = new URLClassLoader(new URL[]{url}); Class c = urlCL.loadClass("TestClassA"); TestClassA object = (TestClassA)c.newInstance(); object.method(); }catch(Exception e){ e.printStackTrace(); }
url = new URL("file:/C:/");
这样写,放在C下面问题吧,可就是出不来
其实要实现自己的类加载器也比较简单,但是我不建议你这么做,当然建立在学习的基础上可以理解。
如果你想实现类加载器我可以给你参考,但是你要自己去改代码,我写的类加载器是一个从数据库中加载类的加载器,你把它改成你需要的形式即可,我想你如果能够读出那个文件,就能够加载类,不懂法邮件到我邮箱[email protected]:package org.thc.databasejava;public class DatabaseClassLoader extends ClassLoader { public DatabaseClassLoader() {
super();
} public DatabaseClassLoader(ClassLoader parent) {
super(parent);
} protected Class<?> findClass(String name) throws ClassNotFoundException {
GetJavaData gjd=new GetJavaData();
Class cls=null;
try {
byte [] jdata= gjd.getClassData(name);
cls=this.defineClass(name, jdata, 0, jdata.length);
} catch (Exception e) {
throw new ClassNotFoundException();
}
return cls;
}
}
http://nihuajie.info/?p=134
囧
当我没出现过