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

无法使用processbuilder运行java命令

慕烨烁
2023-03-14
import java.io.File;
import java.io.IOException;
import java.lang.ProcessBuilder.Redirect;
public class RunJava {
    public static void main(String[] args) throws IOException {
        ProcessBuilder pb = new ProcessBuilder("java","HelloWorld");
        pb.directory(new File("/home/local/prasanth-8508"));
        pb.redirectOutput(Redirect.INHERIT);
        pb.redirectError(Redirect.INHERIT);
        pb.start();
    }
}

线程“main”java.io.ioException中出现异常:无法运行程序“java”

但是当我从终端上运行任何java命令时,它们都工作得很好。

我发现的另一件事是,当我在终端中运行命令:echo$path并使用ProcessBuilder(ProcessBuilder pb=new ProcessBuilder(“bash”,“-c”,“echo$path”);)时,它们会显示不同的输出。即ProcessBuilder命令中不显示jdk/bin的路径。

我如何解决这个问题?

共有1个答案

向锦
2023-03-14

是的,正如@MichaelBerry所说,你可能没有权限访问它,但除此之外,我也想包括在内,

在这里,您已经从非常好的ProcessBuilder开始,您只需要修改ProcessBuilder构造函数中的参数-jar之类的小东西。

我发布了下面的示例代码,可以帮助您理解它是如何工作的。

ProcessBuilder pb = new ProcessBuilder("/path/to/java", "-jar", "your.jar");
pb.directory(new File("preferred/working/directory"));
Process p = pb.start();
 类似资料:
  • I使用Processbuilder如下所示: 在方法中,我设置要执行的linux命令,如下所示: 我可以从终端执行相同的命令。

  • 我正在尝试使用ProcessBuild运行cmd语句。 但是,我只能打开cmd。exe 那么如何编写此语句通过java运行cmd命令??我得到了错误,因为语句由"*"组成。如何编辑ProcessBuilder以便我可以运行语句?非常感谢

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

  • 问题内容: 好的,所以我有一个通过ProcessBuilder运行的python脚本。一切正常。我遇到的问题是,每当我将参数传递到python脚本时,python脚本都会以响应。但是,如果我采用确切的命令并将其复制并粘贴到命令提示符下,则它运行得很好。有什么帮助吗?这是我现在所拥有的一般想法: 问题答案: 将两个单独的参数传递给,而不是串联和: 否则,要执行的程序将看到无法识别的单个参数。

  • 问题内容: 我创建了一个类,该类使用ProcessBuilder创建流程,然后启动流程 现在,当我在linux机器上运行该类时,它运行良好,但是在Windows上却给了我错误,指出未找到“ mvn”之类的东西,我需要更改为 但是,如果我在命令提示符“ mvn exec:java -Dexec.mainClass = FunnyClass”上运行命令,它将运行正常。那么,为什么我需要在process

  • 堆栈跟踪: 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