gpt4 book ai didi

java - 如何在 Linux 上从 java 文件中执行可执行文件?

转载 作者:行者123 更新时间:2023-12-01 15:44:53 25 4
gpt4 key购买 nike

我正在尝试从 java 程序中执行可执行文件和 perl 脚本。我发现了很多与此类似的主题,但其中大多数都涉及 Windows。我知道java是独立于平台的,无论如何它都应该工作,但事实并非如此。我已经尝试过的解决方案是基于 java 运行时及其 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";

最佳答案

在 Windows 和 Linux 上启动进程应该没有区别。

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

文章转换为新方式:

From Runtime.exec() to ProcessBuilder

关于java - 如何在 Linux 上从 java 文件中执行可执行文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7260525/

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