当前位置: 首页 > 知识库问答 >
问题:

无法使用processBuilder执行linux命令

乔望
2023-03-14

I使用Processbuilder如下所示:

            List<String> args = initArgs();
            ProcessBuilder pb = new ProcessBuilder(args);
            tdmServerProcess = pb.start();

            handleInfoLog(tdmServerProcess.getInputStream());
            handleErrorLog(tdmServerProcess.getErrorStream());

initargs方法中,我设置要执行的linux命令,如下所示:

args.add("java -version");
args.add(javaHome + File.separator + "bin" + File.separator + "java");
-r-xr-xr-x 

我可以从终端执行相同的命令。

共有1个答案

端木存
2023-03-14

错误“不能执行二进制文件”表示java文件无效。也许'java-version'实际上是从路径中的另一个位置运行java,而/opt/java7/bin/java无效。尝试手动运行'/opt/java7/bin/java',并检查结果。通过使用与您一起运行java代码的用户运行which java,还可以检查java在路径中的位置。

 类似资料:
  • 线程“main”java.io.ioException中出现异常:无法运行程序“java” 但是当我从终端上运行任何java命令时,它们都工作得很好。 我发现的另一件事是,当我在终端中运行命令:并使用ProcessBuilder()时,它们会显示不同的输出。即ProcessBuilder命令中不显示jdk/bin的路径。 我如何解决这个问题?

  • 我试图使用Java的类来执行包含管道的命令。例如: 然而,我得到了一个错误: 然后: 尽管该命令在命令行中运行得很好,但我无法让执行将其输出重定向到另一个的命令。 有没有办法做到这一点?

  • 堆栈跟踪: cat://opt/mapr/zookeeper/zookeeeperversion:没有这样的文件或目录16/10/25 07:41:12信息Sqoop.Sqoop:运行Sqoop版本:1.4.6-mapr-1609 16/10/25 07:41:12警告工具。basesqooptool:在命令行设置密码不安全。考虑改用-p。16/10/25 07:41:13错误tool.bases

  • 问题内容: 我正在尝试创建一个程序,允许我通过带有参数的终端(如果您想知道,它是用于树莓派的OmxPlayer)来执行命令,但是我希望能够在启动后与它进行交互命令。 例如,我要执行以下操作:omxplayer -win x1 y1 x2 y2,然后可以按“ p”暂停视频/音频媒体 我已经有了一些可以用参数启动omxplayer的东西(实际上是“ ls”,但是它应该以完全相同的方式工作),但是我不了

  • 问题内容: 为了从Java执行python脚本(具有几个命​​令行参数),我尝试使用的是以下Java代码 例如,我打算执行以下命令: 请注意,参数arg3采用参数值列表。 我面临的问题是我没有找到将值列表传递给参数arg3的方法。 如果有人可以给我一些提示以解决我的问题,我将不胜感激。 我已经进行了搜索,但是找不到适合我需要的答案,如果有人找到正确的链接,请告诉我。 最好! 问题答案: 只需将它们

  • 问题内容: 当我使用执行命令时,它如何知道在哪里寻找该命令?使用此技巧,我将PATH变量(通过检查进行了验证)修改为错误(空,工作目录等),但ProcessBuilder仍然可以执行sort,echo,bash等。它是怎么做到的? 注意:我特定的开发环境是OSX,但是此代码也将在Red Hat Enterprise Linux上运行。 问题答案: 该文件说 一个命令,一个字符串列表,表示要调用的外