从Java程序运行外部可执行文件
我正在尝试编写一个Java程序,它可以在Linux下运行一个可执行文件。此可执行文件接收两个参数,并使用两个给定参数执行nmap-sP操作 我将此文件称为file.exe,其内容如下:从Java程序运行外部可执行文件,java,exception,Java,Exception,我正在尝试编写一个Java程序,它可以在Linux下运行一个可执行文件。此可执行文件接收两个参数,并使用两个给定参数执行nmap-sP操作 我将此文件称为file.exe,其内容如下: nmap-sP$segment1-$segment1 我已经做了一个chmod+x文件.exe,它位于.class所在的同一目录中 Java代码如下所示: import java.lang.Runtime; import java.lang.Process; import java.io.IOException;
nmap-sP$segment1-$segment1
我已经做了一个chmod+x文件.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();
}
}
编译后,每当我尝试运行它(从文件.exe所在的位置)时
java运行文件
我将获得以下异常和错误日志:
线程“main”java.io.IOException中出现异常:无法运行程序
“file.exe”:错误=2,此时没有此类文件或目录
start(ProcessBuilder.java:1041)位于
java.lang.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.forkAndExec(本机)中没有这样的文件或目录
方法)位于java.lang.UNIXProcess。(UNIXProcess.java:135)位于
java.lang.ProcessImpl.start(ProcessImpl.java:130)位于
java.lang.ProcessBuilder.start(ProcessBuilder.java:1022)。。。4更多
我缺少什么?您的java程序在启动java程序的目录中查找
file.exe
。它不会查看包含类文件的目录。错误告诉您在当前目录或操作系统的搜索路径中找不到可执行文件
尝试将Pathans部分包含在命令中
Process p = r.exec("/path/to/file.exe "+args[0]+" "+args[1]);
您还应该考虑将每个命令/参数分离为单独的参数
Process p = r.exec(new String[]{"/path/to/file.exe ", args[0], args[1]});
这将有助于处理包含空格的参数
您还应该考虑使用<代码> PrimeBuffer-< /C> >,这将允许您更改命令应该执行的目录上下文< /p>您是否试图指定文件.exe的绝对路径?它告诉我<代码> Exc> <代码>没有合适的<代码>执行(字符串、字符串、字符串)< /> >方法。对不起,正在考虑ProcessBuilder,需要使用字符串数组