Java ProcessBuilder显示已启动Java应用程序的控制台?
我有一个JAVA应用程序,它启动(使用ProcessBuilder)另一个JAVA应用程序,如下所示:Java ProcessBuilder显示已启动Java应用程序的控制台?,java,processbuilder,Java,Processbuilder,我有一个JAVA应用程序,它启动(使用ProcessBuilder)另一个JAVA应用程序,如下所示: String val = "something"; ProcessBuilder processBuilder = new ProcessBuilder("java", "-classpath", dir, appName, val); Process p = processBuilder.start(); 现在,这一切都很好,appName是用参数val启动的,它运行并工作。。。伟大的问题
String val = "something";
ProcessBuilder processBuilder = new ProcessBuilder("java", "-classpath", dir, appName, val);
Process p = processBuilder.start();
现在,这一切都很好,appName是用参数val启动的,它运行并工作。。。伟大的问题是没有出现控制台窗口。。。appName会向控制台进行大量输出,我们需要查看它。。。如何使用控制台启动该过程
我正在尝试类似于(“CMD.exe”、“java”、“-classpath”、dir、appName、val)的东西,等等。。。但我不能把它弄对
另外,我不能重定向流,我的程序实际上可以启动5-10个appName,每个appName都应该有自己的控制台窗口来显示自己的信息
任何帮助都将不胜感激。
谢谢,控制台窗口通常不是最可靠的日志记录形式。它们只存储一定数量的信息(缓冲区),并且在不同平台上的行为可能有所不同 我强烈建议您使用类似的方式登录到文件,如果您需要实时查看,请使用(我知道您使用的是windows) 除此之外,鉴于您希望窗口始终可见,并且为每个日志启动一个tail程序可能会很烦人,我会用JavaSwing编写自己的日志窗口
基本思想是不要太依赖操作系统。控制台窗口通常不是最可靠的日志记录形式。它们只存储一定数量的信息(缓冲区),并且在不同平台上的行为可能有所不同 我强烈建议您使用类似的方式登录到文件,如果您需要实时查看,请使用(我知道您使用的是windows) 除此之外,鉴于您希望窗口始终可见,并且为每个日志启动一个tail程序可能会很烦人,我会用JavaSwing编写自己的日志窗口
基本思想是不要过分依赖操作系统。尝试
Runtime.getRuntime().exec(“cscript java-classpath…”)代码>
无论如何,考虑使用日志框架(Log4J,CAMSONCE),因为打开5个控制台不是最聪明的事情。
尝试<代码>运行时.GeRunTune().Excel(“cScript java - CasSpase..”);代码>
无论如何,考虑使用日志框架(Log4J,Cason日志),因为打开5个控制台不是最聪明的事情。
< p>我通过进程调用几个shell脚本来打开命令行窗口并启动我需要的任何东西。只要脚本不分离(您通常可以停止任何shell命令执行此操作),java仍将保持正在运行的进程
我是在linux上做的,但是这个概念应该是相似的
#!/bin/bash
# To open a process in a new window.
gnome-terminal -x ./your-real-shell-script-here.sh "$@"
真正的脚本将包含您的java执行,例如:
#!/bin/bash
java -jar your-jar-file.jar "$@"
我认为您可以使用javaw在windows上运行,因此您可能只需要一个shell脚本。我通过Process调用几个shell脚本来打开命令行窗口并启动我需要的任何脚本。只要脚本不分离(您通常可以停止任何shell命令执行此操作),java仍将保持正在运行的进程
我是在linux上做的,但是这个概念应该是相似的
#!/bin/bash
# To open a process in a new window.
gnome-terminal -x ./your-real-shell-script-here.sh "$@"
真正的脚本将包含您的java执行,例如:
#!/bin/bash
java -jar your-jar-file.jar "$@"
我认为您可以使用javaw在windows上运行,因此您可能只需要一个shell脚本。只有在执行java时,控制台对象才会存在。。。。从控制台。否则,获取一个的调用返回null
如果要查看控制台,需要打开命令外壳控制台(例如windows cmd.exe或Unix bash shell窗口)并键入:
java -classpath="..." com.example.appName arg1
如果您想以不同的方式运行,很抱歉,登录到控制台不适合您。相反,请使用以下方法之一进行日志记录:
- log4j
- slf4j
- 倒退
控制台对象仅在执行java时存在。。。。从控制台。否则,获取一个的调用返回null
如果要查看控制台,需要打开命令外壳控制台(例如windows cmd.exe或Unix bash shell窗口)并键入:
java -classpath="..." com.example.appName arg1
如果您想以不同的方式运行,很抱歉,登录到控制台不适合您。相反,请使用以下方法之一进行日志记录:
- log4j
- slf4j
- 倒退
运行此代码后,您是否看到任务管理器中正在运行javaw.exe进程?运行此代码后,您是否看到任务管理器中正在运行javaw.exe进程?