猿问

出现 Java 错误时停止运行 .jar 的 AppleScript

我有一个用于运行 .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


江户川乱折腾
浏览 94回答 1
1回答

慕村225694

在评论中回顾了这个之后,很明显问题是 .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 tryend RunFile附加的&> /dev/null & echo $!短语分离 shell 脚本,允许 AppleScript 向前移动,并返回进程的进程 ID 供以后使用。我将 kill 信号放在一个 try 块中,这样如果进程已经正常退出,脚本就不会抛出错误。
随时随地看视频慕课网APP

相关分类

Java
我要回答