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

从Java程序运行外部可执行文件

韦高格
2023-03-14

我试图写一个Java程序,它得到一个可执行文件运行在Linux下。此可执行文件接收两个参数,并使用这两个给定参数执行nmap-sp操作。

我将此文件称为file.exe,其内容如下:

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();
        }


    }

Java runfile

我得到以下异常和错误日志:

线程“main”java.io.ioException中的异常:无法运行程序“file.exe”:error=2,在java.lang.runtime.exec(runtime.java:617)处java.lang.runtime.exec(runtime.java:347)处java.lang.runtime.exec(runtime.java:12)处java.lang.runtime.exec(runtime.java:1041),java.lang.runtime.exec(runtime.java:347)处java.lang.runtime.exec(runtime.java:12)处没有这样的文件或目录,在java.lang.unixprocess.forkandexec(本机方法在java.lang.processBuilder.start(ProcessBuilder.java:1022),essimpl.start(processimpl.java:130)...4个以上

我错过了什么?

共有1个答案

司空锋
2023-03-14

这个错误告诉你在当前目录或操作系统的搜索路径中找不到可执行文件。

尝试在命令中包含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]});

您还应该考虑使用ProcessBuilder,这将允许您更改执行命令的目录上下文

 类似资料:
  • 问题内容: 我正在尝试从Java代码执行程序。这是我的代码: 我的操作系统是Mac OS X 10.6。 如果我从方法中删除,则所有文件名都将打印在控制台上。但是我需要将其打印到文件中。 另外,如果我将命令更改为: 并在Windows上运行,它也可以运行并在文件中完美打印结果。 我已经阅读了其他文章,以期从Java执行另一个应用程序,但似乎都与我的问题无关。 我会很感激我能得到的任何帮助。 谢谢,

  • 问题内容: 我试图制作一个调用外部程序的应用程序,我必须传递两个参数。它没有任何错误。用c ++编写的program.exe可以拍照并修改txt文件的内容。Java程序可以运行,但是什么也没做 这是我的示例代码 问题答案: 从这里可耻地借来的

  • 我试图制作一个调用外部程序的应用程序,我必须传递两个参数。它没有给出任何错误。 ,用C编写,拍摄照片并修改

  • 执行(Exec)外部程序 这是来自GoByExample的例子,代码在https://gobyexample.com/execing-processes。 把新程序加载到自己的内存。 与Spawn不同,执行外部程序并不会返回到原进程中,也就是让外部程序完全取代本进程。 代码实现 package main import "syscall" import "os" import "os/exec"

  • 问题内容: 我是Swift的新手,我没有发现任何有关使用Swing语言执行外部程序或访问外部进程的信息。 在语言开发的当前阶段是否可以做,还是应该改用Objective-C? 也许我的Swift程序中可以使用一些Objective-C库? 谢谢。 问题答案: 您可以使用运行外部程序。例如,从Circle和Square:

  • 注意:test.class文件也使用了example.jar文件中的类文件,有自己的包结构。 我知道我可以将它们放在一个jar文件中,不幸的是我需要将test.class文件分开。