我正在用Java编写一个程序,该程序将执行winrar并将一个供我使用的jar文件解压缩h:\myjar.jar
到该文件夹中h:\new
。我的Java代码是这样的
import java.io.File;
import java.io.IOException;
public class MainClass {
public static void main(String[] args) {
Runtime r = Runtime.getRuntime();
Process p = null;
try {
File dir = new File("C:/Program Files/WinRAR");
p = r.exec("winrar x h:\\myjar.jar *.* h:\\new", null, dir);
} catch (IOException e) {
e.printStackTrace();
}
}
}
执行此操作时,出现此错误
java.io.IOException: Cannot run program "winrar" (in directory "C:\Program Files\WinRAR"): CreateProcess error=2, The system cannot find the file specified
at java.lang.ProcessBuilder.start(Unknown Source)
at java.lang.Runtime.exec(Unknown Source)
at java.lang.Runtime.exec(Unknown Source)
at MainClass.main(MainClass.java:16)
Caused by: java.io.IOException: CreateProcess error=2, The system cannot find the file specified
at java.lang.ProcessImpl.create(Native Method)
at java.lang.ProcessImpl.<init>(Unknown Source)
at java.lang.ProcessImpl.start(Unknown Source)
... 4 more
谁能告诉我为什么会遇到这样的问题。为了使其起作用,我需要在代码中进行哪些更改?
假设winrar.exe
位于中PATH
,则Runtime.exec
能够找到它,如果没有,则需要提供到它的完全限定路径,例如,假设winrar.exe
已安装在其中,则C:/Program Files/WinRAR
需要使用类似…
p=r.exec("C:/Program Files/WinRAR/winrar x h:\\myjar.jar *.* h:\\new");
就个人而言,我建议您使用ProcessBuilder
它,因为它除其他功能外还具有一些其他配置功能。在可能的情况下,还应将命令和参数分成单独的String
元素,例如,与空格相比,它处理的空间要好于单个String
变量。
ProcessBuilder pb = new ProcessBuilder(
"C:/Program Files/WinRAR/winrar",
"x",
"myjar.jar",
"*.*",
"new");
pb.directory(new File("H:/"));
pb. redirectErrorStream(true);
Process p = pb.start();
不要忘记InputStream
从流程中读取内容,否则可能会导致流程停顿
当我运行下面的代码时,我得到错误: 无法运行程序“query . sh”:CreateProcess error = 2,系统找不到指定的文件,请检查以下代码 我不确定如何诊断其故障的根本原因。我应该怎么做才能解决问题?
问题内容: 我在Windows和Linux中运行的Pydub模块有问题。当我尝试这样打开mp3文件时: 控制台向我显示下一条消息: WindowsError:[错误2]系统找不到指定的文件 但是…我将文件(test.mp3)与脚本放在同一文件夹中,名称正确。 为什么我有这个问题?(在Linux中,具有相同的错误) 问题答案: 确保已安装 http://www.ffmpeg.org/。您可以从此官方
我只是试着运行一个shell脚本,它在Eclipse中我的项目目录下。 获取此错误: java.io.IOException:无法运行程序"脚本/test.sh": CreateProcess error=2,系统找不到指定的文件
我对Spark和Python是新手。我已经在Windows上安装了python 3.5.1和Spark-1.6.0-bin-Hadoop2.4。 当我从python shell执行sc=SparkContext(“local”,“simple app”)时,我得到了以下错误。 文件“”,第1行,在 文件“C:\spark-1.6.0-bin-hadoop2.4\python\pyspark\con
keytool错误:Java . io . file not found exception:API . sepa . express . CRT(系统找不到指定的文件) 我尝试了在堆栈溢出中找到的各种示例。 和 已尝试以管理员身份使用cmd。我已将我的证书文件放在桌面上。当我试图复制时: C: \程序文件\Java\jdk1.8.0_60\jre\lib\security 它不接受证书文件。 完
我正在开发一个命令行java应用程序,它必须运行一个名为<code>gradlew的程序。bat assemblererelease在此目录中: 所以我做了这个: 该文件在该目录中100%确定,它在linux中运行完美,但在Windows上不工作!我遇到了这个错误: java.io.IOException:无法运行程序“gradlew.bat”(位于目录“C:\ Users \ administr