Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/333.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
Execute命令在Java中不起作用_Java_Process_Exec - Fatal编程技术网

Execute命令在Java中不起作用

Execute命令在Java中不起作用,java,process,exec,Java,Process,Exec,Execute命令在终端中运行良好,但在Java代码中运行不好 String cmd = "find -name javax.jar"; Process process = Runtime.getRuntime().exec(cmd); BufferedReader reader = new BufferedReader(new InputStreamReader( process.getInputStream())); String l

Execute命令在终端中运行良好,但在Java代码中运行不好

    String cmd = "find -name javax.jar";
    Process process = Runtime.getRuntime().exec(cmd);
    BufferedReader reader = new BufferedReader(new InputStreamReader(
            process.getInputStream()));

    String line = "";
    while ((line = reader.readLine()) != null)
    {
        System.out.println("" + line);
    }
    System.out.println("Line : "+line);

当您使用

Runtime.getRuntime().exec(cmd);

该进程从与Java进程相同的工作目录启动。如果Java是从不同的工作目录运行的,而不是在控制台中运行find-name javax.jar,那么您将看到不同的结果。

我认为您可以尝试添加find的路径。
比如find/var/tmp-name

你说的不工作是什么意思?为什么你认为它不工作?我在终端执行命令。它给出了位置。但是从Java中,它提供了nullRead并实现了的所有建议。这可能会解决问题。如果没有,它应该提供更多关于失败原因的信息。然后忽略它引用exec,并使用ProcessBuilder构建流程。还可以将字符串arg拆分为字符串[]args,以说明本身包含空格的参数。jar和Java都在同一目录中。@newuser在控制台中运行命令时,当前的工作目录是什么?启动java时,当前的工作目录是什么?两者都在根目录中directoryname@IM-WS-U-35:~$find-name javax.jar./MyFIles/MyTest/javax.jarname@IM-WS-U-35:~$它给出了我在终端中尝试时的确切位置。/MyFIles/MyTest/javax.jar