我正在尝试使用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中就可以正常工作了。
我希望有人对此有解决方案:)预先感谢
答案 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\"")
希望这会有所帮助。