前一阵,做了一个项目,项目分为若干个小模块,要求每个模块是一个单独的项目,可以单独发布成web应用,并且要求以API(jar包形式),webservice为其他项目提供支持.我们选择了appfuse的webwork+spring+hibernate框架,由于项目中每个单独项目之间还有依赖关系,我们选择使用ant进行编译,拷贝.后来有其他同事参与进来,他并不习惯于使用ant,说出了ant的诸多不好!并抱怨不能直接在eclipse中进行跟踪,调试,当时我也没有在eclipse中远程调试的经验,只能让他习惯于使用ant编译了.
最近在研究tapestry,在<<Enjoy Web Dev With Tapestry>>这本书中找到了答案:
启动tomcat之前设置两个环境变量
cd %CATALINA_HOME%/bin
set JPDA_ADDRESS=8000
set JPDA_TRANSPORT=dt_socket
startup
最好的方式就是建一个bat文件,内容如下(假设你的CATALINA_HOME地址是D:\tomcat-5.5.9):
set JPDA_ADDRESS=8000set JPDA_TRANSPORT=dt_socketcd D:\tomcat-5.5.9\bin catalina jpda start
然后在eclipse中选择Run-->Debug,弹出页中左边选择Remote Java Application,右边Name 填一个 project 填写上需要远程调试的project名称,host:localhost Port:8000(这些eclipse会自动帮你填充上)
注意: eclipse的Default output folder 和 tomcat部署web应用的路径不能一样(使用ant去build就可以了.)
由于不会贴图只能这样描述了,有什么不清楚的地方欢迎大家指出!
我的email是zhumiaowen0414#163.com欢迎大家交流!
1 楼 weiqingfei 2007-04-27
不知道下面这种远程调试方法和楼主的是不是在原理上是一样的。
在%CATALINA_HOME%/bin下建一个文件setenv.bat
内容为:
SET CATALINA_OPTS=-server -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8000
在%CATALINA_HOME%/bin下建一个文件setenv.bat
内容为:
SET CATALINA_OPTS=-server -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8000
2 楼 rbible 2007-04-27
自行删去--》:\
3 楼 crazyox 2007-04-27
感谢weiqingfei,又学会了一种方法,至于原理就不清楚了,呵呵!应该都是大同小异吧!
刚才试了一下weiqingfei的方法,建一个setenv.bat 放在tomcat下运行startup时tomcat始终会自动执行setenv.bat这样有个弊端,就是不想远程调试的时候必须把文件删掉,然后运行startup,我的方法是建一个bat文件
cd %CATALINA_HOME%/bin
set JPDA_ADDRESS=8000
set JPDA_TRANSPORT=dt_socket
startup
当需要远程调试的时候就运行这个文件,如果不需要就运行tomcat原来的startup
刚才试了一下weiqingfei的方法,建一个setenv.bat 放在tomcat下运行startup时tomcat始终会自动执行setenv.bat这样有个弊端,就是不想远程调试的时候必须把文件删掉,然后运行startup,我的方法是建一个bat文件
cd %CATALINA_HOME%/bin
set JPDA_ADDRESS=8000
set JPDA_TRANSPORT=dt_socket
startup
当需要远程调试的时候就运行这个文件,如果不需要就运行tomcat原来的startup
4 楼 weiqingfei 2007-04-29
crazyox 写道
感谢weiqingfei,又学会了一种方法,至于原理就不清楚了,呵呵!应该都是大同小异吧!
刚才试了一下weiqingfei的方法,建一个setenv.bat 放在tomcat下运行startup时tomcat始终会自动执行setenv.bat这样有个弊端,就是不想远程调试的时候必须把文件删掉,然后运行startup,我的方法是建一个bat文件
cd %CATALINA_HOME%/bin
set JPDA_ADDRESS=8000
set JPDA_TRANSPORT=dt_socket
startup
当需要远程调试的时候就运行这个文件,如果不需要就运行tomcat原来的startup
之所以加一个这样的文件是因为catalina.bat里面有这样一句话刚才试了一下weiqingfei的方法,建一个setenv.bat 放在tomcat下运行startup时tomcat始终会自动执行setenv.bat这样有个弊端,就是不想远程调试的时候必须把文件删掉,然后运行startup,我的方法是建一个bat文件
cd %CATALINA_HOME%/bin
set JPDA_ADDRESS=8000
set JPDA_TRANSPORT=dt_socket
startup
当需要远程调试的时候就运行这个文件,如果不需要就运行tomcat原来的startup
if exist "%CATALINA_HOME%\bin\setenv.bat" call "%CATALINA_HOME%\bin\setenv.bat"
如果你经常会切换要和不要debug,和你的设置一样,只要简单的把SET CATALINA_OPTS=-server -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8000替换成你的设置不久可以了么。