我正在尝试编写一个 Java 程序来获取在 Linux 下运行的可执行文件。该可执行文件接收两个参数并使用两个给定参数执行nmap -sP操作。
我将此文件称为file.exe,其内容如下:
nmap -sP $segment1-$segment1
我已经做了 achmod +x file.exe
并且它在存在的同一目录中.class
。
Java 代码如下:
import java.lang.Runtime;
import java.lang.Process;
import java.io.IOException;
import java.lang.InterruptedException;
public class runFile {
public static void main (String args[]) throws IOException, InterruptedException {
Runtime r = Runtime.getRuntime();
Process p = r.exec("file.exe "+args[0]+" "+args[1]);
p.waitFor();
}
}
编译后,每当我尝试运行它(从 file.exe 所在的位置)通过
java runFile
我收到以下异常和错误日志:
线程“主”java.io.IOException 中的异常:无法运行程序“file.exe”:错误 = 2,在 java.lang.ProcessBuilder.start(ProcessBuilder.java:1041) 处没有此类文件或目录。 Runtime.exec(Runtime.java:617) 在 java.lang.Runtime.exec(Runtime.java:450) 在 java.lang.Runtime.exec(Runtime.java:347) 在 runFile.main(runFile.java:12 ) 引起:java.io.IOException: error=2,在 java.lang.UNIXProcess.(UNIXProcess.java:135) 在 java.lang.UNIXProcess.forkAndExec(Native Method) 没有这样的文件或目录。 ProcessImpl.start(ProcessImpl.java:130) 在 java.lang.ProcessBuilder.start(ProcessBuilder.java:1022) ... 4 更多
我错过了什么?