-2

我似乎无法弄清楚这一点?我想用参数执行 dec.exe

这是我的文件结构:

结构体

这是我在鼠标点击时使用的代码。

Process process = null; 

try { 

    process = new ProcessBuilder("dec.exe",idir,odir).start(); 

} catch (IOException e2) { e2.printStackTrace(); } 

InputStream is = process.getInputStream(); 
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new  BufferedReader(isr); 

String line; 
String total = "";

try { 
    while ((line = br.readLine()) != null) { 
        total += line;
        txtrAsdasda.setText(total);
    }
} 

} catch (IOException e1) { e1.printStackTrace(); }

我收到以下错误:

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
    at java.lang.ProcessBuilder.start(Unknown Source)
    at pw.ConverterUIApp$3.actionPerformed(ConverterUIApp.java:128)

...

java.io.IOException: Cannot run program "dec.exe": CreateProcess error=2, The system cannot find the file specified
    at java.lang.ProcessBuilder.start(Unknown Source)
4

3 回答 3

0

我设法自己修复了它,这完全是关于选择具有正确链接的正确文件:

process = new ProcessBuilder("dec.exe",idir,odir).start(); 

我将 dec.exe 放在导出的 .jar 旁边。

于 2013-03-10T23:22:58.493 回答
0

打包应用程序后,当它嵌入到应用程序 Jar 中时,您将无法启动可执行文件。

这种类型的嵌入式资源只是 zip 文件中的 Zip 条目,操作系统将无法识别或找到该资源来执行它。

你有两个选择。

  1. 不要将这些资源打包在应用程序 Jar 中,而是将它们与应用程序一起安装。这将允许您简单地调用ProcessBuilder("dec.exe")(假设您的应用程序在同一目录中启动)
  2. 将可执行文件(和其他资源)放入resources文件夹并在运行时提取它们。必须提取可执行文件所需的所有相关文件!
于 2013-03-10T23:34:16.843 回答
-1

可能的原因是idirorodir为空。

于 2013-03-10T23:11:56.873 回答