我正在尝试使用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")
请帮忙。在此先感谢您的帮助。
答案 0 :(得分:1)
将参数拆分为数组,每个参数分配一个字符串,然后使用取代为String[]
的exec方法,这通常对参数更有效。
一些符号:
Runtime.getRuntime().exec(new String[] {"cpabe-enc", "pub_key", "message.txt", "( it_department or ( marketing and manager ) )"});
或者你的确切参数是什么。
答案 1 :(得分:0)
因为运行时没有解释'(...)'作为你想要的单个参数。
尝试使用ProcessBuilder: http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/ProcessBuilder.html
答案 2 :(得分:0)
我最近解决了这种问题。我正在使用javaFX在按钮点击时调用shell脚本..这与你的swing应用场景非常类似......
这些链接希望它可以帮助你...
Getting error in calling shell script in windows environment using java code and cygwin...!
快乐的编码......:)