Java CreateProcess 错误=193,%1 不是有效的 Win32 应用程序

Fin*_*ech 3 java swing netbeans promise

我正在尝试读取和写入可扩展链接格式 (ELF) 下面是出现错误的行。

p =  r.exec("./optimizer " + sourceFile + " " + sourceFile + "a" + " " + "--all -i");
Run Code Online (Sandbox Code Playgroud)

运行此行后,我收到如下错误:

java.io.IOException: Cannot run program "./optimizer": CreateProcess             
error=193, %1 is not a valid Win32 application
at java.lang.ProcessBuilder.start(ProcessBuilder.java:1048)
at java.lang.Runtime.exec(Runtime.java:620)
at java.lang.Runtime.exec(Runtime.java:450)
at java.lang.Runtime.exec(Runtime.java:347)
at GUIMode.GUIMode.actionPerformed(GUIMode.java:213)
Run Code Online (Sandbox Code Playgroud)

Ste*_*n C 5

“%1 不是有效的 Win32 应用程序”消息有几个可能的原因,包括:

  • 应用程序的路径名不正确,
  • 由路径名命名的文件不被 Windows 识别为可执行文件,或
  • 该文件是 32 位可执行文件,但由于某种原因,它正在尝试加载 64 位 DLL。

在这种情况下,您使用的是可执行文件的相对路径名,因此 JVM 的当前目录可能与您的想法不同……并且该optimizer文件不在该目录中。

请尝试以下操作:

  1. 替换"./optimizer"为绝对路径名。

  2. 如果命令(绝对)路径名或sourceFile参数包含空格,则用字符串数组替换命令字符串;例如

    exec(new String[]{
           "C:/path/to/optimizer",
           sourceFile, sourceFile + "a", "--all", "-i"});
    
    Run Code Online (Sandbox Code Playgroud)
  3. 尝试从命令提示符运行命令。这个想法是检查这不是由不可执行的文件或 DLL 问题引起的。