我假设您想要能够在Eclipse中使用逐步调试。您可以通过将已构建的类设置在bin目录中,并将其添加到JRE类路径中来在外部运行这些类。
java -cp workspace\p1\bin;workspace\p2\bin foo.Main
您可以使用远程调试器进行调试,并利用项目中构建的类文件。
在此示例中,Eclipse 项目结构如下所示:
workspace\project\
\.classpath
\.project
\debug.bat
\bin\Main.class
\src\Main.java
1. 启动JVM控制台调试模式
debug.bat 是一个Windows批处理文件,应该在cmd.exe控制台外部运行。
@ECHO OFF
SET A_PORT=8787
SET A_DBG=-Xdebug -Xnoagent -Xrunjdwp:transport=dt_socket,address=%A_PORT%,server=y,suspend=y
java.exe %A_DBG% -cp .\bin Main
在参数中,debug端口已被设置为8787。suspend=y参数告诉JVM等待调试器连接。
2. 创建Debug Launch Configuration
在Eclipse中打开Debug对话框(Run > Open Debug Dialog...),并创建一个新的Remote Java Application配置,以下是配置:
- 项目:您的项目名称
- 连接类型:标准(Socket Attach)
- 主机名:localhost
- 端口号:8787
3. 调试
因此,您要调试应用程序时所需执行的操作只有:
- 设置断点
- 在控制台中启动批处理文件
- 启动调试配置
您可以在
bug 122429中跟踪此问题。您可以通过使用此处
描述的抽象层在应用程序中解决此问题。
System.out
和System.in
对于我的用例已足够,并放弃使用System.console()
。 - OneWorld