最近在学习一些applet的相关应用,发现applet是在客户端运行,服务端的MyEclipse没办法直接调试,于是在网上搜罗相关的调试资料,发现资料挺多的,但都似有残缺,经过多方尝试,最后终于成功配置了适合web工程的调试,在此记录下配置过程,希望能对有类似需求的有所帮助。
1.环境:
客户端:已安装C:\Java\jre1.5.0_07,C:\Tomcat5.0\
jre环境变量已配置好:classpat=.;C:\java\jre1.5.0_07\lib;
操作系统为window xp
服务端:已安装D:\Program Files\MyEclipse Enterprise Workbench 5.1.0 GA
workplace:D:\MyEclipse\workspace
(备注:本人客户端和服务端是同一台机器)
2.在程序运行机器(客户端)上为Applet程序启动时自动开启JDWP服务:
到控制面板,打开“java控制面板”,在随后弹出的“java控制面板”对话框中,选择“Java” Tab页,在“java小应用程序 Runtime 设置”中点击“查看”按钮,在弹出的“Java Runtime 设置”对话框中设置“Java Runtime 参数”为:
-Xdebug -Xnoagent -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n
3.修改客户端tomcat相关配置文件:
3.1 修改C:\Tomcat5.0\bin下的文件catalina.bat 找到 这段代码
if not ""%1"" == ""jpda"" goto noJpda
set JPDA=jpda
if not "%JPDA_TRANSPORT%" == "" goto gotJpdaTransport
set JPDA_TRANSPORT=dt_shmem
:gotJpdaTransport
if not "%JPDA_ADDRESS%" == "" goto gotJpdaAddress
set JPDA_ADDRESS=jdbconn
:gotJpdaAddress
修改红色部分
set JPDA_TRANSPORT=dt_socket
set JPDA_ADDRESS=8000
说明:dt_shmem表示本机;dt_socket表示远程调试
8000 就是是第 2 步设置的 address 参数,server监听的调试端口
3.2 修改 C:\Tomcat5.0\bin 下的文件startup.bat 找到 这段代码
call "%EXECUTABLE%" start %CMD_LINE_ARGS%
修改为
call "%EXECUTABLE%" jpda start %CMD_LINE_ARGS%
4. 服务端myeclipse设置调试环境
4.1 Run->Debug
4.2 在弹出的“debug”窗口中双击“Remote Java Appllication”,或点击鼠标右键新增 远程调试项,配置好后点击“close”,因为此时还debug不了
5.把“服务端”配置好要调试的web工程直接部署到“客户端”的tomcat或打成包放到tomcat中
6.“客户端”运行tomcat,运行web工程,“客户端”用ie访问web工程有applet的页面
7.“服务端”的 myeclipse 启动 print 调试
8.这时就可以在指定的项目print 的代码中设置断点来激活debug操作,当程序运行至断点处时将会停止下来进入debug
题外话:
print工程目录概览:
print
|-src
|-applets
|-WebRoot
|-applets
|-WEB-INF
|-classes
|-applets
在web工程中,applet是不能直接访问“WEB-INF/classes”目录下的类(WEB-INF文件夹安全性比较高,客户端无法访问),所以print/WebRoot目录下的jsp、html等页面文件只能设置引用print/WebRoot/下的类文件,如print/WebRoot/applets。
在myeclipse的navigator perspective 透视图中,将MyEclipse自动编译好的类文件print/WebRoot/WEB-INF/classes/applets拷贝到print/WebRoot/applets中让页面文件引用。
类文件放好后,打包或部署到“客户端”的tomcat中,运行tomcat发布工程,先“客户端”用ie访问页面,再“服务端”的MyEclipse启动远程调试,最后在print/src/applets/下的java文件设置断点,当程序运行至断点处时将会停止下来进入debug