Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/386.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java ProcessBuilder显示已启动Java应用程序的控制台?_Java_Processbuilder - Fatal编程技术网

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启动的,它运行并工作。。。伟大的问题

我有一个JAVA应用程序,它启动(使用ProcessBuilder)另一个JAVA应用程序,如下所示:

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进程?