我正在尝试使用 java swing 创建 GUI。从那里我必须运行 Linux 系统命令。我尝试使用 exec()。但如果字符串包含单引号,exec() 函数将无法解析该字符串。我使用的代码如下-
Process p = Runtime.getRuntime().exec("cpabe-enc pub_key message.txt '( it_department or ( marketing and manager ) )'")
BufferedReader stdInput = new BufferedReader(new InputStreamReader(p.getInputStream()));
但是当我运行程序时出现错误 - "'("
出现语法错误。
当我写入时运行相同的命令
Process p = Runtime.getRuntime().exec("cpabe-enc pub_key message.txt default")
请帮忙。预先感谢您的帮助。
最佳答案
将参数拆分为一个数组,每个参数一个字符串,并使用以 String[]
为参数的 exec-method,这通常对于参数来说效果更好。
大致如下:
Runtime.getRuntime().exec(new String[] {"cpabe-enc", "pub_key", "message.txt", "( it_department or ( marketing and manager ) )"});
或者无论你的确切参数是什么。
关于java - 从java程序内部执行linux命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9920675/