linux exec java_Java Runtime.exec在Linux上遇到了麻烦

博主在尝试使用Java的Runtime.exec方法在Linux环境下启动一个新的Java进程时遇到问题。尝试了不同的命令行参数组合,包括使用/bin/bash和-classpath,但遇到了诸如文件路径错误、异常以及语法错误等问题。通过创建一个.sh脚本间接执行命令能够得到正确输出,但直接使用Runtime.exec仍无法解决。问题主要集中在命令行参数的构造和传递上。
摘要由CSDN通过智能技术生成

大家好.我正在开发一个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数组的重载的原因).但是,我仍然遇到问题,我不明白为什么.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值