当前位置: 首页 > 面试题库 >

Runtime.exec未运行“查找”命令

澹台建华
2023-03-14
问题内容

我的问题是,我正在使用Runtime.getruntime.exec()函数在Java上运行我的Unix命令。但是,在运行exec()命令时,它会跳到代码末尾。代码如下。

    Process songProcess;
    ArrayList<String> xmlFilePathsForEmi = new ArrayList<String>();
    int countForEmiSongUpdates = 0;
    String line;
    try {
        songProcess = Runtime.getRuntime().exec(new String[]{"find /home/gozenem/emiornek/ -name '*.xml'"}); // It jumps here !
        songProcess.waitFor();
        bufferedReaderSong = new BufferedReader(new InputStreamReader(songProcess.getInputStream()));
        while((line = bufferedReaderSong.readLine()) != null){
            xmlFilePathsForEmi.add(line);
        }

...
...
...
}

我不知道它与什么有关,可能是exec函数无法运行的一个字符。我需要您的宝贵帮助。谢谢。


问题答案:

您输入的String[]参数Runtime.exec()不正确。必须对其进行拆分,以便每个项目包含一个元素(可执行文件必须是一个字符串,然后每个单独的参数都必须包含在其自己的字符串中)。

尝试类似的方法:

songProcess = Runtime.getRuntime().exec(new String[]{"find", "/home/gozenem/emiornek/", "-name", "*.xml"});

waitFor不要打电话给您在做什么。您需要在进程运行时读取输出,否则就有可能填满Java VM和您的进程之间使用的I /
O缓冲区的风险。因此,waitFor在处理完输出后将其移动到。

从流程文档中:

默认情况下,创建的子进程没有自己的终端或控制台。它的所有标准I /
O(即stdin,stdout,stderr)操作都将重定向到父进程。由于某些本机平台仅为标准输入和输出流提供有限的缓冲区大小,因此
未能及时写入子流程的输入流或读取子流程的输出流可能导致子流程阻塞甚至死锁



 类似资料:
  • 有一个叫做“袖扣”的程序,运行方式如下: 本程序以1个文件作为输入,在“output-dir”中生成4个文件作为输出。 多谢了。

  • 我正在尝试使用AWS codebuild生成一个简单的docker应用程序,但遇到一个错误,其中找不到AWS命令: 我有一个超级简单的docker文件,它构建了一个简单的express应用程序: 我有一个超级简单的构建规范。yml构建docker容器并将其推送到aws注册表: 然而一旦运行,它抛出上面张贴的错误^^我不确定为什么没有找到aws cli utils?这里的指南: http://doc

  • javac-cp“lib/*”src/com/company/main.java 在myproject/src中,我尝试使用: JAVA-CP。COM/公司/主要 C:\myproject\src>javac-cp“lib/*”com/company/main.java C:\myproject\src>java-cp.;“lib/*”com/company/main 现在,代码编译和执行没有任何

  • 问题内容: 我使用以下命令在Centos中运行服务器可执行文件。现在我需要取消这个过程。但是我尝试使用命令来获取,但是无法获取该过程。现在如何杀死现在? 问题答案: 应该返回其中包含的所有过程。否则,服务器可能已经停止。 您应该能够确定PID(并将其存储在文件中),如下所示:

  • 我刚开始咕噜咕噜的。我正在尝试在我的Mac OSX Lion上配置Grunt。 我按照这里的说明,然后创建了一个包含下面文件的项目文件夹。当我尝试通过在终端中键入“grunt”来运行时,我会得到。我还修改了paths,希望添加路径可以使任务运行器工作,但它仍然不能工作。有人能帮忙吗?

  • 问题内容: 我正在使用Runtime.getRuntime()。exec()从Java代码运行Shell脚本。当我将参数作为字符串传递时,代码工作正常 由于必须传递带有空格的路径的其他参数,因此我将String替换为String数组。 我也尝试过 但是他们两个都不起作用。它的抛出异常 当以String形式传递时和与String数组一起使用时,为什么相同的脚本文件会引发异常。有没有人遇到过这个问题。