Eclipse IDE 中的 java.io.Console 支持

标签 java eclipse console java-io

我使用 Eclipse IDE 来开发、编译和运行我的 Java 项目。今天,我尝试使用 java.io.Console 类来管理输出,更重要的是,管理用户输入。

问题在于,当应用程序“通过”Eclipse 运行时,System.console() 返回 null。 Eclipse 在后台进程上运行程序,而不是我们熟悉的带有控制台窗口的顶级进程。

有没有办法强制 Eclipse 将程序作为顶级进程运行,或者至少创建一个 JVM 可以识别的控制台?否则,我不得不将项目打包并在 Eclipse 外部的命令行环境中运行。

最佳答案

我假设您希望能够在 Eclipse 中使用逐步调试。您可以通过在 JRE 类路径的 bin 目录中设置构建的类来在外部运行这些类。

java -cp workspace\p1\bin;workspace\p2\bin foo.Main

您可以使用远程调试器并利用项目中内置的类文件进行调试。

在本例中,Eclipse 项目结构如下所示:

workspace\project\
                 \.classpath
                 \.project
                 \debug.bat
                 \bin\Main.class
                 \src\Main.java

1.在 Debug模式下启动 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

在参数中,调试端口已设置为 8787suspend=y 参数告诉 JVM 等待调试器附加。

<强>2。创建调试启动配置

在 Eclipse 中,打开调试对话框(运行 > 打开调试对话框...)并使用以下设置创建一个新的远程 Java 应用程序配置:

  • 项目:你的项目名称
  • 连接类型:标准(Socket Attach)
  • 主机: 本地主机
  • 端口: 8787

3.调试

因此,在您想要调试应用程序时,您所要做的就是:

  • 设置断点
  • 在控制台中启动批处理文件
  • 启动调试配置

您可以在 bug 122429 中跟踪此问题.您可以在您的应用程序中使用抽象层来解决此问题,如 here 所述。 .

关于Eclipse IDE 中的 java.io.Console 支持,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/104254/

相关文章:

java - 我不知道如何编写命令来在 macOS 控制台、JAVA 中显示文件的方向

java - newScheduledThreadPool(1) 创建多个线程

java - 如何从 JVM 卸载库 (DLL)

java - checkstyle 警告 "Declaring variables, return values or parameters of type ' ArrayList' is not allowed."是什么意思?

javascript - 有没有办法过滤 Google Chrome 控制台中的输出?

javascript - 这个 setTimeout 是如何工作的?什么是 49221 以及 console.log.bind 是如何工作的?

java - 我怎样才能将这个可怕的具有多个泛型的抽象java类重构为 "better"?

Java Access Enum的具体方法?

c++ - Eclipse CDT 控制台输出未显示在带有路径的调试中,也未显示在没有路径的运行中

java - 创建可运行的 JAR 文件后 ImageIcon 丢失