how2j.cn

-->
下载区
文件名 文件大小
请先登录 11m
增值内容 11m
11m

解压rar如果失败,请用5.21版本或者更高版本的winrar

点击下载 winrar5.21

7分29秒
本视频采用html5方式播放,如无法正常播放,请将浏览器升级至最新版本,推荐火狐,chrome,360浏览器。 如果装有迅雷,播放视频呈现直接下载状态,请调整 迅雷系统设置-基本设置-启动-监视全部浏览器 (去掉这个选项)。 chrome 的 视频下载插件会影响播放,如 IDM 等,请关闭或者切换其他浏览器

步骤 1 : 拓扑图点亮   
步骤 2 : 批处理   
步骤 3 : 两个版本   
步骤 4 : startup_eclipse.bat   
步骤 5 : startup_idea.bat   
步骤 6 : 单元测试   
步骤 7 : 比较可运行项目,快速定位问题   

增值内容,请先登录
自己写一个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个开发步骤, 为竞争高薪资职位加上一个有吸引力的砝码.
增值内容,点击购买
使用爬虫已经被系统记录,请勿使用爬虫,增大封号风险。 如果是误封 ,请联系站长,谢谢
步骤 4 :

startup_eclipse.bat

edit
增值内容,请先登录
自己写一个Tomcat, 几乎使用到了除开框架外的所有Java 技术,如多线程,Socket, J2EE, 反射,Log4j, JSoup, JUnit, Html 等一整套技术栈, 从无到有,循序渐进涵盖全部74个知识点,549个开发步骤, 为竞争高薪资职位加上一个有吸引力的砝码.
增值内容,点击购买
使用爬虫已经被系统记录,请勿使用爬虫,增大封号风险。 如果是误封 ,请联系站长,谢谢
startup_eclipse.bat
del /q bootstrap.jar jar cvf0 bootstrap.jar -C bin cn/how2j/diytomcat/Bootstrap.class -C bin cn/how2j/diytomcat/classloader/CommonClassLoader.class del /q lib/diytomcat.jar cd bin jar cvf0 ../lib/diytomcat.jar * cd .. java -cp bootstrap.jar cn.how2j.diytomcat.Bootstrap pause
del /q bootstrap.jar
jar cvf0 bootstrap.jar -C bin cn/how2j/diytomcat/Bootstrap.class -C bin cn/how2j/diytomcat/classloader/CommonClassLoader.class
del /q lib/diytomcat.jar
cd bin
jar cvf0 ../lib/diytomcat.jar *
cd ..
java -cp bootstrap.jar cn.how2j.diytomcat.Bootstrap 
pause
增值内容,请先登录
自己写一个Tomcat, 几乎使用到了除开框架外的所有Java 技术,如多线程,Socket, J2EE, 反射,Log4j, JSoup, JUnit, Html 等一整套技术栈, 从无到有,循序渐进涵盖全部74个知识点,549个开发步骤, 为竞争高薪资职位加上一个有吸引力的砝码.
增值内容,点击购买
使用爬虫已经被系统记录,请勿使用爬虫,增大封号风险。 如果是误封 ,请联系站长,谢谢
startup_idea.bat
del /q bootstrap.jar jar cvf0 bootstrap.jar -C out/production/diytomcat cn/how2j/diytomcat/Bootstrap.class -C out/production/diytomcat cn/how2j/diytomcat/classloader/CommonClassLoader.class del /q lib/diytomcat.jar cd out cd production cd diytomcat jar cvf0 ../../../lib/diytomcat.jar * cd .. cd .. cd .. java -cp bootstrap.jar cn.how2j.diytomcat.Bootstrap pause
del /q bootstrap.jar
jar cvf0 bootstrap.jar -C out/production/diytomcat cn/how2j/diytomcat/Bootstrap.class -C out/production/diytomcat cn/how2j/diytomcat/classloader/CommonClassLoader.class
del /q lib/diytomcat.jar
cd out
cd production
cd diytomcat
jar cvf0 ../../../lib/diytomcat.jar *
cd ..
cd ..
cd ..
java -cp bootstrap.jar cn.how2j.diytomcat.Bootstrap 
pause
增值内容,请先登录
自己写一个Tomcat, 几乎使用到了除开框架外的所有Java 技术,如多线程,Socket, J2EE, 反射,Log4j, JSoup, JUnit, Html 等一整套技术栈, 从无到有,循序渐进涵盖全部74个知识点,549个开发步骤, 为竞争高薪资职位加上一个有吸引力的砝码.
增值内容,点击购买
使用爬虫已经被系统记录,请勿使用爬虫,增大封号风险。 如果是误封 ,请联系站长,谢谢
步骤 7 :

比较可运行项目,快速定位问题

edit
增值内容,请先登录
自己写一个Tomcat, 几乎使用到了除开框架外的所有Java 技术,如多线程,Socket, J2EE, 反射,Log4j, JSoup, JUnit, Html 等一整套技术栈, 从无到有,循序渐进涵盖全部74个知识点,549个开发步骤, 为竞争高薪资职位加上一个有吸引力的砝码.
增值内容,点击购买
使用爬虫已经被系统记录,请勿使用爬虫,增大封号风险。 如果是误封 ,请联系站长,谢谢


HOW2J公众号,关注后实时获知最新的教程和优惠活动,谢谢。


问答区域    
2021-06-05 基于Mac开发的shell脚本如下
luzhi0324




关于Mac上 zsh shell tomcat 的startup.sh脚本
加载中
#!/usr/bin/env zsh
# shellcheck disable=SC2164
# 详细参数解释请看站长.
rm -rf bootstrap.jar
jar cvf0 bootstrap.jar -C out/production/MasterLearning com/luzhi/miniTomcat/Bootstrap.class -C out/production/MasterLearning com/luzhi/miniTomcat/classloader/CommonClassLoader.class
# 删除 lib 目录下的miniTomcat.jar
rm -rf lib/miniTomcat.jar
cd out
cd production
cd MasterLearning
jar cvf0 ../../../lib/miniTomcat.jar *
# shellcheck disable=SC2103
cd ..
cd ..
cd ..
java -cp bootstrap.jar com/luzhi/miniTomcat/Bootstrap

							


2 个答案

luzhi0324
答案时间:2021-06-06
哈,得到站长的肯定,顺便将结束脚本shutdown.sh一起写了.代码如下:

how2j
答案时间:2021-06-05
good and nice !



回答已经提交成功,正在审核。 请于 我的回答 处查看回答记录,谢谢
答案 或者 代码至少填写一项, 如果是自己有问题,请重新提问,否则站长有可能看不到





2021-04-20 这个问题特别希望站主大大回答下
chuancey

这个批处理的目的在于“演示实际上只有Bootstrap.java和CommonClassLoader.java是Application classLoader加载的,其余类特别是依赖的jar包都是由CommonClassLoader加载的" 这个完全理解到了,但是我困惑的是“其它类是如何加载的,比如cn.ycx.ycxtomcat.catalina.Server”是怎么加载到ComonClassLoader里的?在ComonClassLoader里,我们只主动加载了jar包,没有主动加载其他的java类,那么加载其他类是因为Thread.currentThread().setContextClassLoader(commonClassLoader);这句吗?




2 个答案

f0rtune
答案时间:2023-03-17
这里我也有相同疑问没有理解。 1、commonClassLoader里面只写了加载了user.dir.lib下面的jar包逻辑 2、为什么第4行代码,可以通过类名"cn.how2j.diytomcat.catalina.Server"就能加载到Server这个类 commonClassLoader怎么知道"cn.how2j.diytomcat.catalina.Server"的class文件在哪里?
CommonClassLoader loader = new CommonClassLoader();
Thread.currentThread().setContextClassLoader(loader);
String serverClassName = "cn.how2j.diytomcat.catalina.Server";
Class<?> serverClazz = loader.loadClass(serverClassName);

how2j
答案时间:2021-04-21
是通过 bootstrap.jar 加载的嘛



回答已经提交成功,正在审核。 请于 我的回答 处查看回答记录,谢谢
答案 或者 代码至少填写一项, 如果是自己有问题,请重新提问,否则站长有可能看不到




2020-11-17 Mac 开发
2020-11-10 站长大大,这一节时候,是不是都要用bat方式启动呢?
2020-09-17 站长


提问太多,页面渲染太慢,为了加快渲染速度,本页最多只显示几条提问。还有 1 条以前的提问,请 点击查看

提问之前请登陆
提问已经提交成功,正在审核。 请于 我的提问 处查看提问记录,谢谢
关于 实践项目-DiyTomcat-批处理运行 的提问

尽量提供截图代码异常信息,有助于分析和解决问题。 也可进本站QQ群交流: 578362961
提问尽量提供完整的代码,环境描述,越是有利于问题的重现,您的问题越能更快得到解答。
对教程中代码有疑问,请提供是哪个步骤,哪一行有疑问,这样便于快速定位问题,提高问题得到解答的速度
在已经存在的几千个提问里,有相当大的比例,是因为使用了和站长不同版本的开发环境导致的,比如 jdk, eclpise, idea, mysql,tomcat 等等软件的版本不一致。
请使用和站长一样的版本,可以节约自己大量的学习时间。 站长把教学中用的软件版本整理了,都统一放在了这里, 方便大家下载: https://how2j.cn/k/helloworld/helloworld-version/1718.html

上传截图