我正在尝试读写可扩展链接格式(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)
发布于 2018-05-03 22:02:19
出现"%1不是有效的Win32应用程序“消息有几个可能的原因,包括:
在本例中,您使用的是可执行文件的相对路径名,因此JVM的当前目录可能与您认为的不同……并且optimizer
文件不在该目录中。
尝试以下操作:
"./optimizer"
替换为绝对路径名。sourceFile
参数包含空格,请将命令字符串替换为字符串数组;例如exec(新路径{“C:/String[]/to/optimizer”,sourceFile,sourceFile + "a",“--String[]”,"-i"});
发布于 2018-05-03 21:51:07
最有可能的情况是,您的代码没有在您认为的目录中运行。
使用这里给出的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的调用方式,否则不能依赖相对路径。
https://stackoverflow.com/questions/50156510
复制相似问题