2012-08-16 60 views
0

没有错误没有输出,无法理解哪里出错。项目在执行代码时没有响应

String[] commands = new String[] {"maude", "in 1.maude", "red f(a, b, e) ."}; 
Runtime rt = Runtime.getRuntime(); 
Process proc = rt.exec(commands); 
InputStream stdin = proc.getInputStream(); 
InputStreamReader isr = new InputStreamReader(stdin); 
BufferedReader br = new BufferedReader(isr); 
String line = br.readLine(); 
while ((line = br.readLine()) != null) { 
    jTextArea4.append(line + "\n"); 
} 

最初,我有一个字符串数组,第一个运行莫德控制台,第二个是我们感兴趣的,说的是我们的模块(文件)的莫德控制台命令(加载哪些文件),最后一个是检查Maude模块中某些属性的实际命令!

+0

您是否必须通过“cmd”处理器运行命令?你不能直接执行命令吗? – MadProgrammer 2012-08-16 23:09:47

+0

另外你是否尊重Swing的线程规则?您是否将字符串打印到控制台以测试程序是否正常工作? – 2012-08-16 23:10:55

+0

好吧,最后两个命令是用于Maude控制台的。如果逐步描述它,我们首先打开CommandPrompt,然后通过将* .exe的位置传递给它,在加载Console之后运行Maude Console,我们可以给它一个加载命令,例如“load或in 1.maude” “1.maude”是模块(文件)的名称,在文件加载后,我们现在可以检查安全属性(上面给出的代码中的最后一个命令) – Armani 2012-08-16 23:30:01

回答

2

用途:

String maudeCommand = "full_path_to_maude\\maude.exe"; 
String[] commands = new String[] {"cmd.exe", "/c", maudeCommand, "in", "1.maude", "red", "f(a, b, e)", "."}; 

更换full_path_to_maudemaude.exe的位置。

+0

我认为“cmd.exe”和“/ c”不需要,只要我们使用运行时?不是吗? – Armani 2012-08-16 22:36:12

+0

但是它仍然没有响应 – Armani 2012-08-16 22:36:43

+0

需要cmd.exe/c。我假设你在Windows上运行。好的,我已经更新了命令。命令中的所有字符都是正确和必要的 - 例如最后一个点字符? – Reimeus 2012-08-16 22:42:25