步骤 1 : 拓扑图点亮 步骤 2 : 为什么要讲类加载器 步骤 3 : 什么是类对象 步骤 4 : 什么是类加载器 步骤 5 : 类加载器分类 步骤 6 : 举例说明 步骤 7 : 自定义类准备工作 步骤 8 : 自定义类加载器 步骤 9 : URLClassLoader 准备工作 步骤 10 : URLClassLoader 步骤 11 : 类的唯一性 步骤 12 : 双亲委派机制 步骤 13 : 双亲委派机制的意义 步骤 14 : 双亲委派机制里的”双“ 是什么意思 步骤 15 : 比较可运行项目,快速定位问题
增值内容,请先登录
自己写一个Tomcat, 几乎使用到了除开框架外的所有Java 技术,如多线程,Socket, J2EE, 反射,Log4j, JSoup, JUnit, Html 等一整套技术栈, 从无到有,循序渐进涵盖全部74个知识点,549个开发步骤, 为竞争高薪资职位加上一个有吸引力的砝码.
增值内容,点击购买
使用爬虫已经被系统记录,请勿使用爬虫,增大封号风险。 如果是误封 ,请联系站长,谢谢
增值内容,请先登录
自己写一个Tomcat, 几乎使用到了除开框架外的所有Java 技术,如多线程,Socket, J2EE, 反射,Log4j, JSoup, JUnit, Html 等一整套技术栈, 从无到有,循序渐进涵盖全部74个知识点,549个开发步骤, 为竞争高薪资职位加上一个有吸引力的砝码.
增值内容,点击购买
使用爬虫已经被系统记录,请勿使用爬虫,增大封号风险。 如果是误封 ,请联系站长,谢谢
增值内容,请先登录
自己写一个Tomcat, 几乎使用到了除开框架外的所有Java 技术,如多线程,Socket, J2EE, 反射,Log4j, JSoup, JUnit, Html 等一整套技术栈, 从无到有,循序渐进涵盖全部74个知识点,549个开发步骤, 为竞争高薪资职位加上一个有吸引力的砝码.
增值内容,点击购买
使用爬虫已经被系统记录,请勿使用爬虫,增大封号风险。 如果是误封 ,请联系站长,谢谢
package cn.how2j.diytomcat.test;
public class TestClassLoader {
public static void main(String[] args) {
Object o = new Object();
System.out.println(o);
Class<?> clazz = o.getClass();
System.out.println(clazz);
}
}
package cn.how2j.diytomcat.test; public class TestClassLoader { public static void main(String[] args) { Object o = new Object(); System.out.println(o); Class<?> clazz = o.getClass(); System.out.println(clazz); } }
增值内容,请先登录
自己写一个Tomcat, 几乎使用到了除开框架外的所有Java 技术,如多线程,Socket, J2EE, 反射,Log4j, JSoup, JUnit, Html 等一整套技术栈, 从无到有,循序渐进涵盖全部74个知识点,549个开发步骤, 为竞争高薪资职位加上一个有吸引力的砝码.
增值内容,点击购买
使用爬虫已经被系统记录,请勿使用爬虫,增大封号风险。 如果是误封 ,请联系站长,谢谢
增值内容,请先登录
自己写一个Tomcat, 几乎使用到了除开框架外的所有Java 技术,如多线程,Socket, J2EE, 反射,Log4j, JSoup, JUnit, Html 等一整套技术栈, 从无到有,循序渐进涵盖全部74个知识点,549个开发步骤, 为竞争高薪资职位加上一个有吸引力的砝码.
增值内容,点击购买
使用爬虫已经被系统记录,请勿使用爬虫,增大封号风险。 如果是误封 ,请联系站长,谢谢
增值内容,请先登录
自己写一个Tomcat, 几乎使用到了除开框架外的所有Java 技术,如多线程,Socket, J2EE, 反射,Log4j, JSoup, JUnit, Html 等一整套技术栈, 从无到有,循序渐进涵盖全部74个知识点,549个开发步骤, 为竞争高薪资职位加上一个有吸引力的砝码.
增值内容,点击购买
使用爬虫已经被系统记录,请勿使用爬虫,增大封号风险。 如果是误封 ,请联系站长,谢谢
package cn.how2j.diytomcat.test;
public class TestClassLoader {
public static void main(String[] args) {
System.out.println(Object.class.getClassLoader());
System.out.println(TestClassLoader.class.getClassLoader());
}
}
package cn.how2j.diytomcat.test; public class TestClassLoader { public static void main(String[] args) { System.out.println(Object.class.getClassLoader()); System.out.println(TestClassLoader.class.getClassLoader()); } }
增值内容,请先登录
自己写一个Tomcat, 几乎使用到了除开框架外的所有Java 技术,如多线程,Socket, J2EE, 反射,Log4j, JSoup, JUnit, Html 等一整套技术栈, 从无到有,循序渐进涵盖全部74个知识点,549个开发步骤, 为竞争高薪资职位加上一个有吸引力的砝码.
增值内容,点击购买
使用爬虫已经被系统记录,请勿使用爬虫,增大封号风险。 如果是误封 ,请联系站长,谢谢
增值内容,请先登录
自己写一个Tomcat, 几乎使用到了除开框架外的所有Java 技术,如多线程,Socket, J2EE, 反射,Log4j, JSoup, JUnit, Html 等一整套技术栈, 从无到有,循序渐进涵盖全部74个知识点,549个开发步骤, 为竞争高薪资职位加上一个有吸引力的砝码.
增值内容,点击购买
使用爬虫已经被系统记录,请勿使用爬虫,增大封号风险。 如果是误封 ,请联系站长,谢谢
package cn.how2j.diytomcat.test;
import java.io.File;
import java.lang.reflect.Method;
import cn.hutool.core.io.FileUtil;
import cn.hutool.core.util.StrUtil;
public class CustomizedClassLoader extends ClassLoader {
private File classesFolder = new File(System.getProperty("user.dir"),"classes_4_test");
protected Class<?> findClass(String QualifiedName) throws ClassNotFoundException {
byte[] data = loadClassData(QualifiedName);
return defineClass(QualifiedName, data, 0, data.length);
}
private byte[] loadClassData(String fullQualifiedName) throws ClassNotFoundException {
String fileName = StrUtil.replace(fullQualifiedName, ".", "/") + ".class";
File classFile = new File(classesFolder, fileName);
if(!classFile.exists())
throw new ClassNotFoundException(fullQualifiedName);
return FileUtil.readBytes(classFile);
}
public static void main(String[] args) throws Exception {
CustomizedClassLoader loader = new CustomizedClassLoader();
Class<?> how2jClass = loader.loadClass("cn.how2j.diytomcat.test.HOW2J");
Object o = how2jClass.newInstance();
Method m = how2jClass.getMethod("hello");
m.invoke(o);
System.out.println(how2jClass.getClassLoader());
}
}
增值内容,请先登录
自己写一个Tomcat, 几乎使用到了除开框架外的所有Java 技术,如多线程,Socket, J2EE, 反射,Log4j, JSoup, JUnit, Html 等一整套技术栈, 从无到有,循序渐进涵盖全部74个知识点,549个开发步骤, 为竞争高薪资职位加上一个有吸引力的砝码.
增值内容,点击购买
使用爬虫已经被系统记录,请勿使用爬虫,增大封号风险。 如果是误封 ,请联系站长,谢谢
增值内容,请先登录
自己写一个Tomcat, 几乎使用到了除开框架外的所有Java 技术,如多线程,Socket, J2EE, 反射,Log4j, JSoup, JUnit, Html 等一整套技术栈, 从无到有,循序渐进涵盖全部74个知识点,549个开发步骤, 为竞争高薪资职位加上一个有吸引力的砝码.
增值内容,点击购买
使用爬虫已经被系统记录,请勿使用爬虫,增大封号风险。 如果是误封 ,请联系站长,谢谢
package cn.how2j.diytomcat.test;
import java.lang.reflect.Method;
import java.net.URL;
import java.net.URLClassLoader;
public class CustomizedURLClassLoader extends URLClassLoader {
public CustomizedURLClassLoader(URL[] urls) {
super(urls);
}
public static void main(String[] args) throws Exception {
URL url = new URL("file:d:/project/diytomcat/jar_4_test/test.jar");
URL[] urls = new URL[] {url};
CustomizedURLClassLoader loader = new CustomizedURLClassLoader(urls);
Class<?> how2jClass = loader.loadClass("cn.how2j.diytomcat.test.HOW2J");
Object o = how2jClass.newInstance();
Method m = how2jClass.getMethod("hello");
m.invoke(o);
System.out.println(how2jClass.getClassLoader());
}
}
增值内容,请先登录
自己写一个Tomcat, 几乎使用到了除开框架外的所有Java 技术,如多线程,Socket, J2EE, 反射,Log4j, JSoup, JUnit, Html 等一整套技术栈, 从无到有,循序渐进涵盖全部74个知识点,549个开发步骤, 为竞争高薪资职位加上一个有吸引力的砝码.
增值内容,点击购买
使用爬虫已经被系统记录,请勿使用爬虫,增大封号风险。 如果是误封 ,请联系站长,谢谢
package cn.how2j.diytomcat.test;
import java.net.URL;
import java.net.URLClassLoader;
public class CustomizedURLClassLoader extends URLClassLoader {
public CustomizedURLClassLoader(URL[] urls) {
super(urls);
}
public static void main(String[] args) throws Exception {
URL url = new URL("file:d:/project/diytomcat/jar_4_test/test.jar");
URL[] urls = new URL[] {url};
CustomizedURLClassLoader loader1 = new CustomizedURLClassLoader(urls);
Class<?> how2jClass1 = loader1.loadClass("cn.how2j.diytomcat.test.HOW2J");
CustomizedURLClassLoader loader2 = new CustomizedURLClassLoader(urls);
Class<?> how2jClass2 = loader2.loadClass("cn.how2j.diytomcat.test.HOW2J");
System.out.println(how2jClass1==how2jClass2);
}
}
增值内容,请先登录
自己写一个Tomcat, 几乎使用到了除开框架外的所有Java 技术,如多线程,Socket, J2EE, 反射,Log4j, JSoup, JUnit, Html 等一整套技术栈, 从无到有,循序渐进涵盖全部74个知识点,549个开发步骤, 为竞争高薪资职位加上一个有吸引力的砝码.
增值内容,点击购买
使用爬虫已经被系统记录,请勿使用爬虫,增大封号风险。 如果是误封 ,请联系站长,谢谢
package cn.how2j.diytomcat.test;
public class HOW2J {
public void hello() {
System.out.println("hello, this is how2j saying \"Hello!\"");
}
}
package cn.how2j.diytomcat.test; public class HOW2J { public void hello() { System.out.println("hello, this is how2j saying \"Hello!\""); } }
增值内容,请先登录
自己写一个Tomcat, 几乎使用到了除开框架外的所有Java 技术,如多线程,Socket, J2EE, 反射,Log4j, JSoup, JUnit, Html 等一整套技术栈, 从无到有,循序渐进涵盖全部74个知识点,549个开发步骤, 为竞争高薪资职位加上一个有吸引力的砝码.
增值内容,点击购买
使用爬虫已经被系统记录,请勿使用爬虫,增大封号风险。 如果是误封 ,请联系站长,谢谢
增值内容,请先登录
自己写一个Tomcat, 几乎使用到了除开框架外的所有Java 技术,如多线程,Socket, J2EE, 反射,Log4j, JSoup, JUnit, Html 等一整套技术栈, 从无到有,循序渐进涵盖全部74个知识点,549个开发步骤, 为竞争高薪资职位加上一个有吸引力的砝码.
增值内容,点击购买
使用爬虫已经被系统记录,请勿使用爬虫,增大封号风险。 如果是误封 ,请联系站长,谢谢
增值内容,请先登录
自己写一个Tomcat, 几乎使用到了除开框架外的所有Java 技术,如多线程,Socket, J2EE, 反射,Log4j, JSoup, JUnit, Html 等一整套技术栈, 从无到有,循序渐进涵盖全部74个知识点,549个开发步骤, 为竞争高薪资职位加上一个有吸引力的砝码.
增值内容,点击购买
使用爬虫已经被系统记录,请勿使用爬虫,增大封号风险。 如果是误封 ,请联系站长,谢谢
HOW2J公众号,关注后实时获知最新的教程和优惠活动,谢谢。
问答区域
2022-05-21
diytomcat实现的webappclassloader破坏了双亲委派机制吗?
回答已经提交成功,正在审核。 请于 我的回答 处查看回答记录,谢谢
2021-09-01
站长为什么没办法调试 加了多端口和多线程之后?????
2 个答案
ssz 跳转到问题位置 答案时间:2022-08-29 右键断点, 选thread模式
how2j 跳转到问题位置 答案时间:2021-09-15 不可能嘛,你是不是没用debug模式启动~
回答已经提交成功,正在审核。 请于 我的回答 处查看回答记录,谢谢
2020-07-14
和tomcat的区别
2020-06-16
那我把rt.jar这个里面的String类给替换了总可以了吧
2020-06-16
那我把rt.jar这个里面的String类给替换了总可以了吧
提问之前请登陆
提问已经提交成功,正在审核。 请于 我的提问 处查看提问记录,谢谢
|