java - Java Runtime.getRuntime().exec - 没有这样的文件或目录
问题描述
使用Runtime.getRuntime().exec( cmdAry );
相同的一个字符串作为数组。
Exeption Cannot run program "libreoffice": error=2, No such file or directory
如果我在终端中输入确切的命令字符串,它就可以工作。
这是命令字符串:
libreoffice --impress --show /home/xxx/ImpressTests/ShowTestOne.odp
Linux Mint 19.3 相同的 java 程序在 Windows 10 上运行良好。
在程序成功运行后,Linux 终端上会显示此内容。重新保存文件并不能解决此问题。
xxx@LM19RyzenVM:~/CodeJava$ libreoffice --impress --show /home/xxx/ImpressTests/ShowTestOne.odp
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
xxx@LM19RyzenVM:~/CodeJava$
这是导致失败的 libreoffice 错误吗?这以前有效。如何了解有关错误的更多信息?这是在 VirtualBox VM 中运行的。这可能有区别吗?我现在去真机上测试。
谢谢。
解决方案
我找到了。
https://bugs.documentfoundation.org/show_bug.cgi?id=118373
这是一个已知的错误。出于某种原因,Windows 不在乎。但是在从 Java 启动的 Linux 上,如果子进程写入 SYSERR,Java 会丢弃它。所以也许我可以将它包装在 Linux 上的脚本中以覆盖错误,直到修复到达。
推荐阅读
- assembly - 用 lea 指令理解基本的汇编代码
- r - 如何命名一列矩阵行名
- python - 我尝试使用 cx_Freeze 创建一个 exe,它只是在启动时关闭,没有错误消息
- javascript - 图片不可见
- mysql - 在 Centos 7.8 上将 innodb_flush_method 设置为 O_DIRECT
- java - LazyInitializationException even though @Transactional is used
- typescript - 执行 this[prop] = data[prop] 时如何解决 TS2322 错误?
- c - c中的二维随机对称游走,
- powershell - 从管理员帐户运行脚本时,命令 $env:LOGONSERVER 不起作用?
- c++ - 何时适合重新分配函数参数或返回指向新内存的指针?