gpt4 book ai didi

Java exec 方法不执行程序

转载 作者:行者123 更新时间:2023-11-30 08:34:05 25 4
gpt4 key购买 nike

我正在编写的这个程序具有应该执行程序但不执行任何操作的方法。问题方法如下:

public void findCC_Data(List<String> l7) {

StringBuffer output = new StringBuffer();

Process p;
try {
for(String sql_file: l7) {
String command = "cleartool describe " + sql_file;
p = Runtime.getRuntime().exec(command);
System.out.println("Executing: " + command);
p.waitFor();
BufferedReader reader = new BufferedReader(new InputStreamReader(p.getInputStream()));
String line = "";
while ((line = reader.readLine()) != null) {
output.append(line + "\n");
}
if (reader.readLine() == null) {
System.out.println("'reader.readLine()' is equal to null");
}


}

} catch(Exception e) {
e.printStackTrace();
}

System.out.println(output.toString());



}

有谁知道为什么命令不执行任何操作并且 reader.readLine() 方法总是返回 null?

我正在学习教程,但基本上使用的是 cleartool 程序而不是 ping 程序。该教程位于此 URL:https://www.mkyong.com/java/how-to-execute-shell-command-from-java/

解决方案System.out.println(output.toString()) 打印语句位于 for 循环之外,而不是在循环内部。现在,当我在循环内移动 SOP 语句时,它会打印一百万多行关于 ClearCase 版本控制内容的信息。要解决这个问题,请将带有 output.toString() 的 SOP 放在上面损坏代码的循环中。

最佳答案

(java, python, bash, ...) 中的程序对 ClearCase 命令不执行任何操作的一种可能性是,如果所述 cleartool 命令在已设置的动态 View 中运行 ( cleartool setview ).

As I explained beforecleartool setview 命令打开一个子 shell,命令应该在其中运行,这里不是这种情况(java 程序在主 shell 中运行)

另一个可能的原因是你读的是stdout,而不是stderr,不知何故这个命令返回了一个错误(也许它的执行路径不正确)。

thought it would not matter anyway because a method I call before the one in question is supposed to change directories to the dynamic view. It appears it does not work as expected though because the result of the cleartool pwd command is just my desktop

是的,每个 cleartool 命令都在其自己的 shell 中运行。您必须为每个 Java Process run("cleartool ...") 命令设置正确的执行文件夹,以便这些 cleartool 命令在正确的文件夹中启动。
请参阅“execute file from defined directory with Runtime.getRuntime().exec ”,尽管答案有点过时,并且可能已随 Java8 发生变化。


正如 OP 所指出的,output.toString() 打印语句在 for 循环 之外,而不是在所述循环内。
您可以在以下位置查看其他示例:

关于Java exec 方法不执行程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39085200/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com