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

7fyelxc5  于 2022-11-10  发布在  Java
关注(0)|答案(2)|浏览(435)

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

p =  r.exec("./optimizer " + sourceFile + " " + sourceFile + "a" + " " + "--all -i");

运行此行后,我得到错误类似:

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)
nom7f22z

nom7f22z1#

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

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

在本例中,您使用的是可执行文件的相对路径名,因此JVM的当前目录可能与您所想的不同......并且optimizer文件不在该目录中。
请尝试以下操作:
1.将"./optimizer"替换为绝对路径名。
1.如果命令(绝对)路径名或sourceFile参数包含空格,请将命令字符串替换为字符串数组;例如:

exec(new String[]{
       "C:/path/to/optimizer",
       sourceFile, sourceFile + "a", "--all", "-i"});

1.尝试从命令提示符下运行命令。目的是检查这不是由不可执行文件或DLL问题引起的。

5ssjco0h

5ssjco0h2#

最有可能的情况是,您的代码并没有在您认为的目录中运行。
使用此处给出的OP代码:how to get current directory in java?

File directory = new File (".");
try {
    System.out.println ("Current directory's canonical path: " 
            + directory.getCanonicalPath()); 
    System.out.println ("Current directory's absolute  path: " 
                + directory.getAbsolutePath());
}catch(Exception e) {
    System.out.println("Exceptione is ="+e.getMessage());
}

现在将其与优化器所在位置进行比较。
一般来说,除非控制JVM的调用方式,否则不能依赖于相对路径。

相关问题