解决JAVA单步调试键盘输入被JDB占用的问题

Posted lengchong

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了解决JAVA单步调试键盘输入被JDB占用的问题相关的知识,希望对你有一定的参考价值。


解决JAVA单步调试键盘输入被JDB占用的问题

问题来源:

  • 在完成本周任务时,编写的代码中含有Scanner类,编译及运行过程均正确,但使用JDB单步调试时,运行到输入行无法在JDB内部输入变量值。技术图片
    技术图片

解决方案

  • 错误原因:JDB占用了控制台,导致无法在调试窗口进行输入输出操作。
  • 解决步骤:
  • 1.打开两个终端,一个用来远程监听,一个用来JDB单步调试。
  • 2.在终端1输入以下命令进行监听远程控制:
    java -Xdebug -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=y Calculation
    注意这里的文件目录,一定放一个.class文件在当前目录下,而不仅仅编译到bin中
    技术图片

  • 3.在终端2输入以下命令建立本机与监听窗口的联系,并开始JDB调试:
    (简单直白的讲就是把原来 jdb -classpath .:./bin files的命令替换成这个就行)
    jdb -connect com.sun.jdi.SocketAttach:port=8000,hostname=localhost技术图片

  • 4.使用next命令运行到含有Scanner类对象的输入行时,转换到终端1进行变量输入,再转到终端2,此时已经完成输入,程序可以向下运行。
    技术图片
    技术图片

  • 5.运行完程序后输入及输出都可以在终端1中找到结果。技术图片

参考链接

以上是关于解决JAVA单步调试键盘输入被JDB占用的问题的主要内容,如果未能解决你的问题,请参考以下文章

解决Linux安装Oracle12c时提示端口被占用问题

IDEA 调试 端口被占用解决方法

端口号被占用问题解决

解决端口号被占用

如何解决端口被占用问题

如何关闭”80“和“443”端口占用问题解决办法