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

Java CreateProcess错误=193,%1不是有效的Win32应用程序,java,swing,netbeans,promise,Java,Swing,Netbeans,Promise,我正在尝试读写可扩展链接格式(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

我正在尝试读写可扩展链接格式(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)

最有可能的是,您的代码没有在您认为的目录中运行

使用此处给出的OP代码:

现在将其与优化器所在的位置进行比较


一般来说,除非您控制JVM的调用方式,否则您不能依赖相对路径。

最有可能的情况是,您的代码没有在您认为的目录中运行

使用此处给出的OP代码:

现在将其与优化器所在的位置进行比较


一般来说,除非您控制JVM的调用方式,否则您不能依赖相对路径。

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

  • 应用程序的路径名不正确
  • Windows无法将以路径名命名的文件识别为可执行文件,或者
  • 该文件是32位可执行文件,但由于某些原因,它试图加载64位DLL
在本例中,您使用的是可执行文件的相对路径名,因此JVM的当前目录可能与您认为的不同。。。并且
优化器
文件不在该目录中

请尝试以下操作:

  • 用绝对路径名替换
    “/optimizer”

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

    exec(new String[]{
           "C:/path/to/optimizer",
           sourceFile, sourceFile + "a", "--all", "-i"});
    
  • 尝试从命令提示符下运行该命令。其目的是检查这不是由不可执行文件或DLL问题引起的


  • “%1不是有效的Win32应用程序”消息可能有以下几种原因:

    • 应用程序的路径名不正确
    • Windows无法将以路径名命名的文件识别为可执行文件,或者
    • 该文件是32位可执行文件,但由于某些原因,它试图加载64位DLL
    在本例中,您使用的是可执行文件的相对路径名,因此JVM的当前目录可能与您认为的不同。。。并且
    优化器
    文件不在该目录中

    请尝试以下操作:

  • 用绝对路径名替换
    “/optimizer”

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

    exec(new String[]{
           "C:/path/to/optimizer",
           sourceFile, sourceFile + "a", "--all", "-i"});
    
  • 尝试从命令提示符下运行该命令。其目的是检查这不是由不可执行文件或DLL问题引起的