我用Java编写了一个程序,并且有一个可执行的jar,客户需要在Windows或Mac机器上打开它。我的一些客户......不是电脑用户。
因此,我需要编写两个脚本(如果有人知道如何使用Mac和Windows的单个脚本,这将是惊人的),通过双击Mac和Windows自动启动我的可执行jar 。如果Java安装正确,脚本应该没有任何问题。如果没有安装Java,那么他们应该已经知道了。
这是我的Windows机器的批处理脚本:
start javaw -jar ExecutableProgram.jar
但是,我不确定要为Mac机器制作什么样的脚本。 我应该使用哪种类型的脚本?
AppleScript的? SH? 需要能够双击执行。
答案 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。有两种方法:
/..
:"java -jar ExecutableProgram.jar &>- &"
以关闭输出流,并{{1}在后台运行它。 (只有&>-
无效。)&
文件夹并打开&
Contents/
的密钥Info.plist
:
LSUIElement
true
(请注意,您需要以<key>LSUIElement</key><true/>
开头的完整路径,例如,这是使用defaults write /full/path/to/Info LSUIElement -bool true
获得的,但是无法提供/
扩展名。)如果这不起作用,那么绝对最简单的方法是编写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