在多个操作系统上使用脚本启动可执行jar

时间:2012-06-26 00:59:44

标签: shell applescript executable-jar

我用Java编写了一个程序,并且有一个可执行的jar,客户需要在Windows或Mac机器上打开它。我的一些客户......不是电脑用户。

因此,我需要编写两个脚本(如果有人知道如何使用Mac和Windows的单个脚本,这将是惊人的),通过双击Mac和Windows自动启动我的可执行jar 。如果Java安装正确,脚本应该没有任何问题。如果没有安装Java,那么他们应该已经知道了。

这是我的Windows机器的批处理脚本:

start javaw -jar ExecutableProgram.jar

但是,我不确定要为Mac机器制作什么样的脚本。 我应该使用哪种类型的脚本?

AppleScript的? SH? 需要能够双击执行。

2 个答案:

答案 0 :(得分:2)

在Mac OS X上,双击Jar应自动打开它。但是,我没有一个好的方法来测试它;因为我是开发人员,所以我的计算机特别做了很多事情:-)特别是Apple自己的Java运行时从10.6开始被弃用,我不知道其他Java运行时带来了什么工具。然而,如果这种方法有效(我认为会这样),那就是最好的选择。

如果这不起作用,那么下一个最好的选择是使用AppleScript,如adayzdone建议的那样。我将使用的AppleScript将改为:

do shell script (¬
  "cd " & quoted form of POSIX path of (path to me) & "/.. ; " & ¬
  "java -jar ExecutableProgram.jar")

quoted form of ...位获取脚本的路径(path to me),将其转换为Unix路径(POSIX path of ...),并为shell引用特殊字符({{1} });由于脚本在目录中运行,您还需要quoted form of ...才能到达Jar所在的父目录。要使其双击,请将文本复制并粘贴到AppleScript编辑器中,然后在“保存...”对话框中,将文件格式设置为“应用程序”。 (要编辑它,请从AppleScript编辑器中打开应用程序。)此方法的缺点是您将运行两个应用程序:真正的Java应用程序和Mac shell。有两种方法:

  • 如果命令的命令行输出不重要,请将AppleScript第三行的字符串更改为/.."java -jar ExecutableProgram.jar &>- &"以关闭输出流,并{{1}在后台运行它。 (只有&>-无效。)
  • 更多涉及的方法不会退出AppleScript,只是隐藏它:
    • 按住Control键并单击AppleScript应用程序,然后选择“显示包内容”
    • 导航至&文件夹并打开&
    • 添加值为Contents/的密钥Info.plist
      • 如果是纯文本XML格式(不是二进制格式),您可以添加LSUIElement
      • 从命令行开始,这是true(请注意,您需要以<key>LSUIElement</key><true/>开头的完整路径,例如,这是使用defaults write /full/path/to/Info LSUIElement -bool true获得的,但是无法提供/扩展名。)
      • 您还可以使用Apple的“Property List Editor”应用程序,该应用程序(至少用于)附带开发人员工具;免费的第三方财产清单编辑也存在。

如果这不起作用,那么绝对最简单的方法是编写Unix shell脚本而不是Windows批处理脚本。它必须使用"$(pwd)/Info"扩展名保存,并设置其可执行位(.plist)。内容应该是

.command

(如果您不熟悉Unix shell脚本:第一行声明这是一个shell脚本;第二行进入shell脚本所在的目录;第三行执行相关操作。)原因这种方法不太可取的是它会打开终端(OS X的命令行界面);你会得到一个窗口,在脚本终止之前保持打开状态;当脚本终止时,所述窗口将不会(或可能不会)关闭;终端不会自行退出。因此,它显然是一个二等公民。

答案 1 :(得分:0)

虽然我不确定java命令,但您可以将AppleScript保存为应用程序,以便双击运行。

set theFolder to quoted form of "/Users/CODe/Desktop/yourFolder"
    do shell script "cd " & theFolder & " ; java -jar ProfessionalMediator.jar"

您也可以通过保存为应用程序的AppleScript在终端中执行此操作:

tell application "Finder" to set theFolder to POSIX path of (file (path to me)'s container as alias)
tell application "Terminal"
    activate
    do script "cd " & theFolder & " ; java -jar ProfessionalMediator.jar" in window 1
end tell