【问题标题】:the project does not respond when the code executed代码执行时项目没有响应
【发布时间】:2012-08-16 22:19:15
【问题描述】:

No errors 没有输出,不明白哪里出错了。

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 控制台,第二个是 Maude 控制台的命令,它说明我们感兴趣的模块(文件)是什么(要加载什么文件),以及最后一个是检查 Maude 模块中某些属性的实际命令!

【问题讨论】:

  • 您必须通过“cmd”处理器运行命令吗?不能直接执行命令吗??
  • 你也尊重 pg Swing 的线程规则吗?您是否将字符串打印到控制台以测试程序是否正常工作?
  • 好吧,最后两个命令用于 Maude 控制台。如果分步描述,我们先打开CommandPrompt,然后通过传递*.exe的位置给它运行Maude Console,在控制台加载之后我们可以给它一个加载命令,比如“load or in 1.maude” “1.maude”-是模块(文件)的名称,文件加载后我们现在可以检查安全属性(上面给出的代码中的最后一个命令)
  • 我试图用 System.out.println(line); 替换 jTextArea4.append(line + "\n"); 并且它一直运行到 Maude 控制台的欢迎标签,所以似乎 Maude 控制台不接受或完全忽略其余的命令

标签: java swing runtime processbuilder


【解决方案1】:

用途:

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_maude替换为maude.exe的位置。

【讨论】:

  • 我认为只要我们使用运行时就不需要“cmd.exe”和“/c”?不是吗?
  • 但它仍然没有响应
  • 需要cmd.exe/c。我假设您在 Windows 上运行。好的,我已经更新了命令。命令中的所有字符是否正确且必要 - 例如最后一个点字符?
  • 对,好的!最后一个点很重要“这是 Maude 语法中命令的结尾”,并且“in 1.maude”也是从该控制台调用文件时命令的一部分,但我想知道我已经尝试了整个手动idea,先运行cmd,然后调用Maude控制台,加载文件并使用指定的命令执行,效果很好……
  • 添加 maude.exe(或 bat 文件)的完整路径。查看我的更新。
猜你喜欢
  • 1970-01-01
  • 2021-10-06
  • 1970-01-01
  • 2017-08-02
  • 1970-01-01
  • 2018-09-16
  • 2015-12-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多