【问题标题】:Runtime.exe failure on LinuxLinux 上的 Runtime.exe 失败
【发布时间】:2020-08-07 11:44:45
【问题描述】:

努力尝试使用 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

【问题讨论】:

  • "file not found" 错误可能是由解释器或找不到动态链接库引起的。您的 shell 环境与 Java 使用的环境之间存在一些差异。尝试在您的 shell 中运行 file /usr/bin/xed,并在 Java 和您的 shell 中运行 ldd /usr/bin/xed,这应该提供足够的信息来查看正在发生的事情 另请参阅 unix.stackexchange.com/questions/378301/…

标签: java linux runtime exec


【解决方案1】:

如果您在 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 启动程序时才会出现此问题。

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

【讨论】:

    猜你喜欢
    • 2012-08-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多