开发@Retention(RetentionPolicy.SOURCE)层次的Annotation,特别是大型的Annotation应用,如果没有调试手段会很麻烦。我们普通虚拟机启动,只要直接在java.exe运行时添加VM调试参数即可,不过Annotation应用的运行是在apt.exe(jdk 1.5)或者直接在javac.exe(jdk1.6+)运行,直接加VM调试参数是行不通。
不过不用担心,Annotation也是可以调试的,其实方法很简单,直接用 -J 参数添加调试用的VM参数即可,以javac.exe为例如下:
javac -J-Xdebug -J-Xrunjdwp:transport=dt_socket,address=8787,server=y,suspend=y......
这里有3个地方需要注意一下:
- -J和后面带的VM参数之间不能有空格。
- -J一次只能带一个VM参数,如果有多个VM参数需要用多个-J。
- suspend需要赋值y,这样javac运行时会等调试器连进来后再继续执行,这样会比较方便,否则可能你调试器还没连上javac就执行完了。