首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Java CreateProcess error=193 %1不是有效的Win32应用程序

Java CreateProcess error=193 %1不是有效的Win32应用程序
EN

Stack Overflow用户
提问于 2018-05-03 21:40:04
回答 2查看 17.5K关注 0票数 3

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

代码语言:javascript
运行
复制
p =  r.exec("./optimizer " + sourceFile + " " + sourceFile + "a" + " " + "--all -i");

在运行这一行之后,我得到了如下错误:

代码语言:javascript
运行
复制
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)
EN

回答 2

Stack Overflow用户

发布于 2018-05-03 22:02:19

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

  • 应用程序的路径名不正确,
  • 由路径名命名的文件不能被视窗识别为可执行文件,或者
  • 该文件是32位可执行文件,但由于某种原因,它试图加载64位动态链接库。

在本例中,您使用的是可执行文件的相对路径名,因此JVM的当前目录可能与您认为的不同……并且optimizer文件不在该目录中。

尝试以下操作:

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

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

exec(新路径{“C:/String[]/to/optimizer”,sourceFile,sourceFile + "a",“--String[]”,"-i"});

  1. 尝试从命令提示符运行该命令。这样做是为了检查这不是由非可执行文件或动态链接库问题引起的。
票数 5
EN

Stack Overflow用户

发布于 2018-05-03 21:51:07

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

使用这里给出的OP代码:how to get current directory in java?

代码语言:javascript
运行
复制
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的调用方式,否则不能依赖相对路径。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50156510

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档