繁体   English   中英

Java Runtime.exec()+ Minisat

[英]Java Runtime.exec() + Minisat

我为verilog.v文件编写了一个逻辑门模拟器和网表解析器。 现在,我想用SAT模块做一些等效检查。

目前,我使用Sat4J但我想使用minisat2进行检查。 我安装了minisat,可以通过输入以下命令从控制台运行它:

minisat_static cnf.file

对于ls,ps等简单指令,我的Java启动/执行代码更少,它运行得很好...但是如果我使用minisat_static <path-to-file>它不会

    printLinuxCommand("minisat_static bin/resources/cnf");
}

static void printLinuxCommand(String command) throws Exception {
    System.out.println("Linux command: " + command);
    String line;
    Process process = Runtime.getRuntime().exec(command);
    Reader r = new InputStreamReader(process.getInputStream());
    BufferedReader in = new BufferedReader(r);
    while ((line = in.readLine()) != null)
        System.out.println(line);
    in.close();
}

错误信息:

Exception in thread "main" java.io.IOException: Cannot run program "minisat_static": error=2, Datei oder Verzeichnis nicht gefunden
    at java.lang.ProcessBuilder.start(ProcessBuilder.java:1041)
    at java.lang.Runtime.exec(Runtime.java:617)
    at java.lang.Runtime.exec(Runtime.java:450)
    at java.lang.Runtime.exec(Runtime.java:347)
    at circuit.circuit.printLinuxCommand(circuit.java:76)
    at circuit.circuit.main(circuit.java:70)
Caused by: java.io.IOException: error=2, Datei oder Verzeichnis nicht gefunden
    at java.lang.UNIXProcess.forkAndExec(Native Method)
    at java.lang.UNIXProcess.<init>(UNIXProcess.java:135)
    at java.lang.ProcessImpl.start(ProcessImpl.java:130)
    at java.lang.ProcessBuilder.start(ProcessBuilder.java:1022)
    ... 5 more

有谁能够帮助我?

尝试在命令中放入minisat_static的完整路径。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM