Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.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 无法使用Tomcat作为服务在前台运行cmd_Java_Batch File_Tomcat_Cmd_Foreground - Fatal编程技术网

Java 无法使用Tomcat作为服务在前台运行cmd

Java 无法使用Tomcat作为服务在前台运行cmd,java,batch-file,tomcat,cmd,foreground,Java,Batch File,Tomcat,Cmd,Foreground,当我使用statup.bat运行Tomcat并运行我的xxx.bat文件时,我可以看到xxx.bat文件正在运行,它正在调用testNg,我可以看到所有的测试用例正在运行 但是当我将Tomcat作为服务运行时,我的xxx.bat文件开始执行它的工作并开始执行测试用例,但它在后台运行 问题是我想看到测试用例在前台运行 我的代码是 String batPath = "D:\\Workspaces\\TestingWorkspace\\myproject\\runTestNg.bat"; Strin

当我使用
statup.bat
运行Tomcat并运行我的
xxx.bat
文件时,我可以看到
xxx.bat
文件正在运行,它正在调用
testNg
,我可以看到所有的测试用例正在运行

但是当我将Tomcat作为服务运行时,我的
xxx.bat
文件开始执行它的工作并开始执行测试用例,但它在后台运行

问题是我想看到测试用例在前台运行

我的代码是

String batPath = "D:\\Workspaces\\TestingWorkspace\\myproject\\runTestNg.bat";

String pojectRoot  = "D:\Workspaces\TestingWorkspace\myproject";

String path = "cmd /c start " + batPath + " " + projectRoot;

Process p = Runtime.getRuntime().exec(path);

p.waitFor();

您需要从进程中读取流。如果我没记错的话,一共有三条小溪。有错误流、输入流和输出流。你需要得到它们,阅读它们并打印出来

BufferedReader in = new BufferedReader(new InputStreamReader(p.getInputStream()));
String line;
while ((line = in.readLine()) != null) {
    System.out.println(line);
}

不要在cmd命令中使用wordstart,然后按照chilltouch关于读取流的建议操作。

我的问题不是这个。我的批处理文件正在运行并按其应做的方式执行其工作,但它是在后台执行的。我看不到它。是的,它在工作,但是日志(又名流)没有被处理。因为您并没有在窗口中打开cmd,所以并没有显示“消息”的内容。所以,当您需要用start观看它们时,您需要实现这一点。您可以在tomcatfolder\logs\localhost***.log中看到日志文件,但这是手动的。