我正在使用Java作爲國際象棋的前端AI我正在寫。 Java處理所有圖形,然後使用幾個命令行參數執行一些C語言。有時C將永遠不會完成,並且不會回到Java。我找到了發生這種情況的案例,並用.exe和java來測試它們。當我拿出java時,這些情況每次都有效。我不確定該從哪裏出發。下面是一些代碼,我認爲是初步認識,以及整個項目作爲https://github.com/AndyGrant/JChess從Java執行C奇怪的錯誤
try{
Process engine = Runtime.getRuntime().exec(buildCommandLineExecuteString(lastMove));
engine.waitFor();
int AImoveIndex = engine.exitValue();
String line;
BufferedReader input = new BufferedReader(new InputStreamReader(engine.getInputStream()));
while ((line = input.readLine()) != null)
System.out.println(line);
input.close();
if (AImoveIndex == -1){
activeGame = false;
System.out.println("Fatal Error");
while (true){
}
}
else{
JMove AIMove = JChessEngine.getAllValid(types,colors,moved,lastMove,!gameTurn).get(AImoveIndex);
AIMove.makeMove(types,colors,moved);
lastMove = AIMove;
validMoves = JChessEngine.getAllValid(types,colors,moved,lastMove,gameTurn);
}
waitingOnComputer = false;
parent.repaint();
}
catch(Exception e){
e.printStackTrace();
}
無法分辨您發佈的內容。不願意通讀該項目。 – duffymo
我在使用java的RunTime執行C程序時正在尋找可能的錯誤。 – AndrewGrant
如果「C永遠不會完成」,你能證明你的C代碼不會陷入某個無限循環嗎?如果你在C程序返回的'main'函數之前放置'print'語句,是否打印?僅僅因爲你手動給C程序提供了正確的輸入並且它終止了並不意味着C程序應該在與Java程序集成時終止。例如,您的Java程序可能會錯誤地格式化輸入。我不會馬上說,你在使用Runtime時會出現一些奇怪的錯誤。 – user2570465