【问题标题】:How do I execute an executable file from within a java file on linux?如何从 Linux 上的 java 文件中执行可执行文件?
【发布时间】:2011-08-31 16:49:27
【问题描述】:

我正在尝试从 java 程序中执行一个可执行文件和一个 perl 脚本。我发现了许多与此类似的主题,但其中大多数是指 Windows。我知道 java 是独立于平台的,无论如何它都应该可以工作,但事实并非如此。我已经尝试过的解决方案是基于 java Runtime 的解决方案,它是 exec 方法。它在 Windows 上运行良好,但由于我在 linux 上移植我的程序,我需要对其进行调整。正如我所说,我需要执行一个我已经编译并用 C++ 编写的可执行文件,它看起来正在工作,但它以退出值为 1 完成执行。我不知道它是什么意思,但在 Windows 上它以 0 退出这就是它应该在 linux 上的样子(?!?!)。另一方面,珍珠脚本根本没有启动。我使用命令“perl script.pl”,它以 255 的值退出。不用说,它没有做它应该做的事情。

有人知道执行这些文件的另一种方法吗?或者也许我的实施有问题?

如果你想看一下,这里是代码: 这是 perl 脚本的脚本

public static void main(String[] args){
    System.out.println("Starting");
    try{
        String[] cmd = {"perl", "cloc-1.53.pl"};
        Process pr = Runtime.getRuntime().exec(cmd);
        BufferedReader input = new BufferedReader(new InputStreamReader(pr.getInputStream()));

        String line=null;

        while((line=input.readLine()) != null) {
            System.out.println(line);
        }

        int exitVal = pr.waitFor();
        System.out.println("Exit code: " + exitVal);
    } catch (Throwable t){
        t.printStackTrace();
    }
}

对于编译后的文件,我改变了这个:

String[] cmd = {"perl", "cloc-1.53.pl"};

与:

String cmd = "./UCC";

【问题讨论】:

    标签: java file exec executable compiled


    【解决方案1】:

    windows和linux启动进程应该没有区别

    好文章http://www.javaworld.com/javaworld/jw-12-2000/jw-1229-traps.html 它采用旧方法,但提供了很好的洞察力。

    文章转换为新方式:

    From Runtime.exec() to ProcessBuilder

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-02-14
      • 2014-06-03
      • 1970-01-01
      • 1970-01-01
      • 2015-02-28
      • 2018-09-26
      • 1970-01-01
      • 2014-11-07
      相关资源
      最近更新 更多