Ros*_*oss 103 java eclipse console java-io
我使用Eclipse IDE来开发,编译和运行我的Java项目.今天,我正在尝试使用java.io.Console该类来管理输出,更重要的是,用户输入.
问题是当应用程序"通过"Eclipse运行时System.console()返回null.Eclipse在后台进程上运行程序,而不是我们熟悉的控制台窗口的顶级进程.
有没有办法强制Eclipse将程序作为顶级进程运行,或者至少创建一个JVM将识别的控制台?否则,我被迫将项目放在jar上并在Eclipse外部的命令行环境中运行.
McD*_*ell 50
我假设您希望能够使用Eclipse中的逐步调试.您可以通过在JRE类路径上的bin目录中设置构建的类来外部运行类.
java -cp workspace\p1\bin;workspace\p2\bin foo.Main
Run Code Online (Sandbox Code Playgroud)
您可以使用远程调试器进行调试,并利用项目中构建的类文件.
在此示例中,Eclipse项目结构如下所示:
workspace\project\
\.classpath
\.project
\debug.bat
\bin\Main.class
\src\Main.java
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
在参数中,调试端口已设置为8787.在暂停= Y参数告诉JVM等到调试器附加.
2.创建调试启动配置
在Eclipse中,打开"调试"对话框("运行">"打开调试对话框...")并使用以下设置创建新的远程Java应用程序配置:
3.调试
因此,您想要调试应用程序时所需要做的就是:
您可以在错误122429中跟踪此问题.您可以使用此处所述的抽象层在您的应用程序中解决此问题.
Lap*_*son 35
我使用的解决方法是在使用Eclipse时使用System.in/System.out而不是Console.例如,而不是:
String line = System.console().readLine();
Run Code Online (Sandbox Code Playgroud)
您可以使用:
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
String line = bufferedReader.readLine();
Run Code Online (Sandbox Code Playgroud)
小智 5
你可以自己实现一个类.以下是一个例子:
public class Console {
BufferedReader br;
PrintStream ps;
public Console(){
br = new BufferedReader(new InputStreamReader(System.in));
ps = System.out;
}
public String readLine(String out){
ps.format(out);
try{
return br.readLine();
}catch(IOException e)
{
return null;
}
}
public PrintStream format(String format, Object...objects){
return ps.format(format, objects);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
91026 次 |
| 最近记录: |