java查看上下文加载器_线程上下文类加载器
package util.tom;
import java.io.*;
public class ThreadClassLoader extends Thread {
@Override
public void run() {
//判斷類上下文加載器,是不是我們指定的加載器
System.err.printf("clName:%s\n" ,Thread.currentThread().getContextClassLoader().getClass().getName() );
}
public static void main(String[] args) {
Thread td = new Thread(new Runnable() {
@Override
public void run() {
(new ThreadClassLoader()).start();
}
});
//設置線程上下文類加載器
td.setContextClassLoader(new MySelfClassLoader());
td.start();
}
}
class MySelfClassLoader extends ClassLoader {
private String root;
@Override
protected Class> findClass(String name) throws ClassNotFoundException {
byte[] classData = loadClassData(name);
if (classData == null) {
throw new ClassNotFoundException();
} else {
return defineClass(name , classData , 0 , classData.length);
}
}
private byte[] loadClassData(String className) {
String fileName = root+File.separatorChar+className.replace('.' , File.separatorChar)+".class";
try {
InputStream ins = new FileInputStream(fileName);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
int bufferSize = 1024;
byte[] buffer = new byte[bufferSize];
int length = 0;
while ((length = ins.read(buffer)) != -1) {
baos.write(buffer , 0 , length);
}
return baos.toByteArray();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
public String getRoot() {
return root;
}
public void setRoot(String root) {
this.root = root;
}
}
總結
以上是生活随笔為你收集整理的java查看上下文加载器_线程上下文类加载器的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: java孙膑和庞涓问题_庞涓与孙膑的故事
- 下一篇: java地狱猫_ES6 ES6变量的声
