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

ProcessBuilder无法找到指定的文件,而Process可以

危彬彬
2023-03-14
问题内容

我正在尝试从Java程序运行jar文件,并且成功使用了getRuntime()

Process processAlgo = Runtime.getRuntime().exec("java -jar "+algoPath);

但是,当我尝试使用时ProcessBuilder,出现The system cannot find the file specified异常:

ProcessBuilder builder = new ProcessBuilder("java -jar " + algoPath);
Process processAlgo = builder.start();

我试图更改指定文件的位置,并指出了其完整路径,但无法正常工作。是什么原因引起的?


问题答案:

ProcessBuilder 希望它的参数分别传递。

也就是说,对于每个命令和参数,ProcessBuilder希望将其视为单独的参数。

目前,您正在告诉它运行“ java -jar algoPath的值是什么” …从ProcessBuilder的角度来看,这是无效的命令。

尝试…

ProcessBuilder builder = new ProcessBuilder("java",  "-jar", algoPath);
Process processAlgo = builder.start();

代替。

如果algoPath包含空格(即,一个以上的参数),则也需要将它们分隔为单独的参数,否则您的程序将无法执行,因为Java会将其algoPath视为单个参数。

查看JavaDocs了解更多详细信息



 类似资料:
  • } 当我运行这段代码时(我使用的是Eclipse),我得到了堆栈跟踪: JAVA木卫一。IOException:无法运行程序“python”:CreateProcess error=2,系统找不到java指定的文件。lang.ProcessBuilder。在运行测试时启动(ProcessBuilder.java:1048)。main(RunTest.java:11)由:java引起。木卫一。IOE

  • 在使用ProcessBuilder的目录()方法时,我试图在Java中运行一个子进程。但是,每当我使用目录()方法时,程序都会失败,说找不到文件。但是,该文件存在于工作目录中。 输出: 当我省略了catudory()方法并创建一个ProcessBuilder,例如:,它可以正常工作,firefox.exe成功启动。 这在Windows和Linux上都会发生。 我已经尝试了几个版本的启动命令(比如<

  • 问题内容: 我的代码简单明了,如下所示: 我得到的错误响应是: 任何指导都是太棒了。 将tesseract添加到我的path变量中有助于: 但是,现在尝试运行pytesseract部分时,代码崩溃了。 问题答案: 只需遇到相同的错误,然后决定回答这个问题-可能会帮助某人节省时间… 首先,确保已安装/复制了Tesseract-OCR可执行文件。 Windows在您的环境变量中指定的目录中找不到可执行

  • 我使用Java ASM库编译了一个类(称为Test.class)。我决定尝试使用“java”命令运行该类,以确保已正确编译该类。 然而,当我这样做的时候,我得到了“找不到或加载主类测试”的消息。我觉得这很奇怪,因为类在当前工作目录内(我也尝试过将“.”作为类路径传递,但没有用)。然后我尝试用“javap”反汇编它,这很完美,这很奇怪,因为如果javap能找到类文件,那么java肯定也能找到吗? 这

  • 当运行下面的jenkins管道代码时,我得到了错误。我在指定的位置找不到文件,这是一个错误。所以我尝试了很多方法,但得到了同样的错误。 即使有人知道如何写jenkins文件,也可以评论它,或者如果你有任何网址,也可以在评论中发布。这会有很大帮助的 我已经附上了上面的所有数据,如果有人知道答案,请回答问题

  • 问题内容: 我有一个名为 的文件。 它与我的文件位于同一目录中。 但是,当我尝试通过以下代码访问它时,找不到此文件,发生错误: 这是我的代码: 问题答案: 直接将word.txt作为项目根文件夹的子级和src的对等方放置 免责声明:我想解释一下为什么这种方法适用于这种特殊情况,以及为什么它可能不适用于其他情况。 工作原理: 使用或任何其他变体时,你正在文件系统上相对于“工作目录”查找文件。工作目录