簡體   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