亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

出現 Java 錯誤時停止運行 .jar 的 AppleScript

出現 Java 錯誤時停止運行 .jar 的 AppleScript

江戶川亂折騰 2023-04-13 14:14:15
我有一個用于運行 .jar 文件的 AppleScript。.jar 文件需要幾個輸入,這些輸入最初是通過命令行輸入的,但現在我輸入 .csv 并自動讀入 .jar。由于未知原因,有時 CSV 中的數字無法正確讀取,從而導致NumberFormatExceptionJava 代碼中出現 。但是,我的腳本沒有中斷,而是不斷嘗試在無限循環中輸入無效輸入。有沒有辦法修改我的代碼,以便在 .jar 引發錯誤時腳本停止?這是我當前的代碼:on RunFile(jar_location)    do shell script "cd " & jar_location & " ; cat 'prompt.csv' | sh 'runScript.sh' 'WSO'"end RunFile
查看完整描述

1 回答

?
慕村225694

TA貢獻1880條經驗 獲得超4個贊

在評論中回顧了這個之后,很明顯問題是 .jar 文件試圖進行交互——要求在光標處輸入一些內容——而 AppleScript 的設計不是為此而設計的do shell script。AppleScript 可以從 shell 獲取錯誤和輸出,但它無法將響應反饋給 shell,或者判斷 shell 腳本是否正在等待輸入。


如果 .jar 文件不能在非交互模式下運行,那么 AppleScript 確保進程結束的唯一方法是獲取其進程 ID 號,等待一段合理的時間,然后向其發送終止信號。該腳本如下所示:


on RunFile(jar_location)

    set pid to do shell script "cd " & jar_location & " ; cat 'prompt.csv' | sh 'runScript.sh' 'WSO' &> /dev/null & echo $!"

    -- wait 5 seconds, or whatever seems appropriate for the task to complete

    delay 5

    try

        do shell script "kill " & pid

    end try

end RunFile

附加的&> /dev/null & echo $!短語分離 shell 腳本,允許 AppleScript 向前移動,并返回進程的進程 ID 供以后使用。我將 kill 信號放在一個 try 塊中,這樣如果進程已經正常退出,腳本就不會拋出錯誤。


查看完整回答
反對 回復 2023-04-13
  • 1 回答
  • 0 關注
  • 136 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號