首页 > 解决方案 > Linux 上的 Runtime.exe 失败

问题描述

努力尝试使用 Runtime.exec() 在 Linux 上启动任何程序;在 Windows 上运行良好。

java.io.IOException: Cannot run program "/usr/bin/xed": error=2, No such file or directory
    at java.base/java.lang.ProcessBuilder.start(ProcessBuilder.java:1128)
    at java.base/java.lang.ProcessBuilder.start(ProcessBuilder.java:1071)
    at java.base/java.lang.Runtime.exec(Runtime.java:592)
    at java.base/java.lang.Runtime.exec(Runtime.java:416)
    at java.base/java.lang.Runtime.exec(Runtime.java:313)
    at guiExample/com.windyweather.MyCalc.launchProgram(MyCalc.java:276)

我已经在玫瑰色周围呆了几天了。发现这个:

https://www.javaworld.com/article/2071275/when-runtime-exec---won-t.html

并在那里合并了最后,最好的解决方案。我已经将命令包装在一个脚本中,认为问题来自我试图启动的 soffice,但事实并非如此。它甚至不会启动 /usr/bin/xed。起初我只是尝试了 xed,但这是一个链接,所以认为 shell 可能已经解决了这个问题。所以我试图找到通往固定程序本身的艰难道路。没运气。

代码在这里:https ://github.com/windyweather/GuiExample

包括完整的堆栈跟踪

https://github.com/windyweather/GuiExample/blob/master/Linux_Runtime_exec_Failure.txt

为什么这么难?我做错了什么明显愚蠢的事情?当输入到 shell 的相同内容正常工作时,/usr/bin/xed 怎么可能不存在。顺便说一句,这是我问 shell 时得到的:

darrell@LM19RyzenVM:~$ ls -l /usr/bin/xed
-rwxr-xr-x 1 root root 10232 Dec 11 06:49 /usr/bin/xed
darrell@LM19RyzenVM:~$ /usr/bin/xed
darrell@LM19RyzenVM:~$ 

谢谢。对不起。忘了这个。

LM19RyzenVM:~$ java --version
openjdk 11.0.7 2020-04-14
OpenJDK Runtime Environment (build 11.0.7+10-post-Ubuntu-2ubuntu218.04)
OpenJDK 64-Bit Server VM (build 11.0.7+10-post-Ubuntu-2ubuntu218.04, mixed mode, sharing)
LM19RyzenVM:~$ cat /etc/issue
Linux Mint 19.3 Tricia \n \l

标签: javalinuxruntimeexec

解决方案


如果在 Linux 上启动 Jar 文件,程序会按预期运行。我称之为 Eclipse 错误。几年前我看到过关于 Eclipse 中关于 Runtime.exec() 的类似错误的提及。这是成功运行 jar 文件并成功启动 soffice 的终端输出。

darrell@LM19RyzenVM:~/CodeJava/zzJarFiles$ java --version
openjdk 11.0.7 2020-04-14
OpenJDK Runtime Environment (build 11.0.7+10-post-Ubuntu-2ubuntu218.04)
OpenJDK 64-Bit Server VM (build 11.0.7+10-post-Ubuntu-2ubuntu218.04, mixed mode, sharing)
darrell@LM19RyzenVM:~/CodeJava/zzJarFiles$ java -jar GuiExample_2020_04_23.jar
launchProgram before soffice --impress --show /home/darrell/ImpressTests/ChainTests/ShowTestOne.odp
launchProgram after
ERROR>func=xmlSecCheckVersionExt:file=xmlsec.c:line=188:obj=unknown:subj=unknown:error=19:invalid version:mode=abi compatible;expected minor version=2;real minor version=2;expected subminor version=25;real subminor version=26
ExitValue: 0
darrell@LM19RyzenVM:~/CodeJava/zzJarFiles$ 

我能够成功启动: /usr/bin/xed 和 xed 和 soffice 选项和按预期播放的幻灯片文件。

我会查找并报告或评论 Eclipse 中的错误。xed 在我的测试系统上很好。该问题仅在使用 eclipse 启动程序时出现。

那好吧。这几天我再也回不来了。哈哈


推荐阅读