准备工作:
a. 在pom.xml中配置jetty插件:
方式1 - Eclipse调试:
解决:
点击[Edit Source Lookup Path...]添加源代码工程或目录
方式2 - 远程调试:
①. 选择Eclipse的[Run]-[External Tools]-[External Tools Configurations...]菜单。
在打开的对话框中,新建一个Program,输入mvn.bat (mvnDebug.bat)的完整路径,指定要启动的web工程,在Arguments框输入jetty:run
使用mvn.bat时,需要添加调试参数:
切换到Environment选项,添加一个变量:
MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=1066
其它参数:
-Xnoagent: 禁用默认sun.tools.debug调试器
-Djava.compiler=NONE: 禁止JIT编译器的加载
dt_shmem: 共享内存传输,仅限于Windows
点击[Run]启动jetty服务器
点击[Debug]启动调试客户端
②. 同方式1的②
附:
这时Eclipse里只有调试客户端:
ii. 如果suspend=y,运行JVM而没有开启调试客户端,JVM会等待直到客户端就绪:
a. 在pom.xml中配置jetty插件:
<plugins>
<plugin>
<groupId>org.mortbay.jetty</groupId>
<artifactId>maven-jetty-plugin</artifactId>
<version>6.1.26</version>
<configuration>
<webAppSourceDirectory>src/main/webapp</webAppSourceDirectory>
<scanIntervalSeconds>6</scanIntervalSeconds>
<contextPath>/prospect</contextPath>
<webDefaultXml>jetty.xml</webDefaultXml>
<jettyEnvXml>jetty-env.xml</jettyEnvXml>
<connectors>
<connector implementation="org.mortbay.jetty.nio.SelectChannelConnector">
<port>8080</port>
<headerBufferSize>80000</headerBufferSize>
</connector>
</connectors>
<stopKey>stop</stopKey>
<stopPort>8089</stopPort>
</configuration>
</plugin>
</plugins>
b. 使用maven的clean install命令将web及依赖工程打包成war文件。
方式1 - Eclipse调试:
①. 右键maven工程,在弹出的菜单中选择[Debug As],首次选择[Maven build...],以后选择[Maven build]来读取保存的配置启动:
![点击查看原始大小图片](https://i-blog.csdnimg.cn/blog_migrate/0a0ef153b2eaaf4424b6afaebab13f5b.png)
②. 在浏览器输入地址http://localhost:8080/prospect/already/mosaic.htm,在代码上加断点,命中后IDE提示:Source not found:
![](https://i-blog.csdnimg.cn/blog_migrate/2347f0ce1a21f30bd00197bdb32f2dbe.png)
解决:
点击[Edit Source Lookup Path...]添加源代码工程或目录
完成后即可调试代码:
![点击查看原始大小图片](https://i-blog.csdnimg.cn/blog_migrate/dd1bb37c999253fdaed6030089ce901d.png)
方式2 - 远程调试:
①. 选择Eclipse的[Run]-[External Tools]-[External Tools Configurations...]菜单。
在打开的对话框中,新建一个Program,输入mvn.bat (mvnDebug.bat)的完整路径,指定要启动的web工程,在Arguments框输入jetty:run
![](https://i-blog.csdnimg.cn/blog_migrate/876c42cef8e3a1101e1b61d0ae53448b.png)
使用mvn.bat时,需要添加调试参数:
切换到Environment选项,添加一个变量:
MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=1066
![点击查看原始大小图片](https://i-blog.csdnimg.cn/blog_migrate/442fa175d6c0ec9408e20c8e6790ffd3.png)
其它参数:
-Xnoagent: 禁用默认sun.tools.debug调试器
-Djava.compiler=NONE: 禁止JIT编译器的加载
dt_shmem: 共享内存传输,仅限于Windows
点击[Run]启动jetty服务器
选择Eclipse的[Run]-[Debug Configurations...]菜单,在弹出的对话框中,新建一个Remote Java Application,指定和External Tools里面相同的工程和连接属性:
![点击查看原始大小图片](https://i-blog.csdnimg.cn/blog_migrate/75dcbd64b625fa86fe83c96a232dfa22.png)
点击[Debug]启动调试客户端
![](https://i-blog.csdnimg.cn/blog_migrate/bded8ed4cd8c60d71fb22ea99b49c5d7.png)
②. 同方式1的②
附:
i. 远程调试的jvm可以独立于Eclipse运行:
![](https://i-blog.csdnimg.cn/blog_migrate/459a21438693ad21ac1538dcc54ce8eb.png)
这时Eclipse里只有调试客户端:
![](https://i-blog.csdnimg.cn/blog_migrate/ae9a94788c17f223302e426f749611e0.png)
ii. 如果suspend=y,运行JVM而没有开启调试客户端,JVM会等待直到客户端就绪:
![点击查看原始大小图片](https://i-blog.csdnimg.cn/blog_migrate/741e45cff797f333cc37798901750464.png)