从java程序内部执行linux命令

时间:2012-03-29 07:14:34

标签: java shell command-line

我正在尝试使用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")

请帮忙。在此先感谢您的帮助。

3 个答案:

答案 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应用场景非常类似......

这些链接希望它可以帮助你...

How to code in java to run unix shell script which use rSync internally in windows environment using cygwin?

Getting error in calling shell script in windows environment using java code and cygwin...!

快乐的编码......:)