加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

Java Runtime.exec在Linux上遇到了麻烦

发布时间:2020-12-13 19:03:22 所属栏目:Linux 来源:网络整理
导读:大家好.我正在开发一个Java程序,用于在Linux环境中使用,该环境创建一个运行另一个Java类的新Java进程,但我遇到了麻烦.我终于解决了所有问题.调用 Runtime.getRuntime().exec(new String[] { "/bin/bash","-c","'java -classpath /home/kevin/workspace/Misc/

大家好.我正在开发一个Java程序,用于在Linux环境中使用,该环境创建一个运行另一个Java类的新Java进程,但我遇到了麻烦.我终于解决了所有问题.调用

Runtime.getRuntime().exec(new String[] { "/bin/bash","-c","'java -classpath /home/kevin/workspace/Misc/bin HelloWorld'" })

在我的Java程序中返回

/bin/bash: /usr/lib/jvm/java-6-openjdk/jre/bin/java -classpath /home/kevin/workspace/Misc/bin HelloWorld: No such file or directory

在stdout / stderr中.如果我试试

Runtime.getRuntime().exec(new String[] { "/bin/bash -c 'java -classpath /home/kevin/workspace/Misc/bin HelloWorld'" })

我得到一个Java异常

Cannot run program "/bin/bash -c 'java -classpath /home/kevin/workspace/Misc/bin HelloWorld'": java.io.IOException: error=2,No such file or directory
     ...
Caused by: java.io.IOException: java.io.IOException: error=2,No such file or directory

最后,使用简单

Runtime.getRuntime().exec("/bin/bash -c 'java -classpath /home/kevin/workspace/Misc/bin HelloWorld'")

给了我一个

-classpath: -c: line 0: unexpected EOF while looking for matching `''
-classpath: -c: line 1: syntax error: unexpected end of file

来自stdout / stderr.

同时,创建一个新的一行.sh文件(并分配适当的权限)只有这个(文件顶部没有#!/ bin / bash)

/bin/bash -c 'java -classpath /home/kevin/workspace/Misc/bin HelloWorld'

给出正确的输出而没有错误.

我知道Runtime.exec的用法非常复杂,而且我已经解决了之前从中得到的一些大问题,但这个问题让我感到很困惑(例如Runtime.exec使用StringTokenizer搞砸任何有空格的命令在它们中,这就是我调用接受String数组的重载的原因).但是,我仍然遇到问题,我不明白为什么.

最佳答案
你的第一次尝试几乎是正确的.

Runtime.getRuntime().exec(new String[] { "/bin/bash","java -classpath /home/kevin/workspace/Misc/bin HelloWorld" })

您不需要额外的引用,因为传递单个String参数会自动引用它.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读