为了账号安全,请及时绑定邮箱和手机立即绑定

出现 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 关注
  • 93 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信