Runtime.getRuntime.exec()无法正常工作

时间:2018-12-20 11:45:37

标签: java linux

我正在尝试使用Runtime.getRuntime.exec();运行Javac命令; 当我将它粘贴到bash中时,Command本身运行得很好,但是由于某些原因,当从我的程序中执行它时,它不起作用。

命令

javac -cp $(find '/root/discobo/libs' -type f -printf '%p:') -sourcepath '/root/discobo/git/Bot/src' $(find '/root/discobo/git/Bot/src' -name '*.java') -d '/root/discobo/target' -Xlint:all

我已经尝试过使用Javas ProcessBuilder来实现相同的结果。

它给了我以下错误

  

javac:无效标志:'/ root / discobo / libs /'

这对我来说毫无意义,因为该命令在bash中就可以正常工作了。

我希望有人对此有解决方案:)预先感谢

1 个答案:

答案 0 :(得分:0)

您正在使用 find 命令,只有bash可以理解。因此,如果您在bash上执行此操作,bash会用实际结果(即文件)扩展或替换 $ {find),然后用实际文件列表调用 javac

因此,在使用Runtime.getRuntime.exec()执行相同操作时,请使用

Runtime.getRuntime.exec("bash -c \"javac -cp $(find '/root/discobo/libs' -type f -printf '%p:') -sourcepath '/root/discobo/git/Bot/src' $(find '/root/discobo/git/Bot/src' -name '*.java') -d '/root/discobo/target' -Xlint:all\"")

希望这会有所帮助。