使用Linux,我运行一些我用Java编写的程序,在带有清单文件的jar中压缩它们,然后将它们放在已添加到$ PATH的个人目录中,如下所示:
program.jar file2 file2
。它适用于我指向我的控制台的任何目录,我甚至可以program.jar file1 | less
或program.jar file1 > output.txt
。它们就像bin控制台程序一样工作。
但是在OS X上我无法复制相同的行为,我被迫使用java -jar program.jar
运行它们,否则会说-bash program.jar: cannot execute binary file
有没有办法让jar像在OS X上的Linux一样运行?
编辑:
从命令行
如果使用Xcode Organizer的一个模板构建新的Java Swing应用程序,Xcode会自动生成一个完整的应用程序包,其默认值为{{1文件。您可以直接在Xcode或Property List Editor中微调Info.plist
文件。有关使用Xcode进行Java开发的更多信息,请参阅Xcode帮助(可从Xcode的“帮助”菜单中获得)。
如果要将现有Java应用程序转换为OS X Java应用程序,请使用Jar Bundler Info.plist
中提供的应用程序。它允许您获取现有的/Developer/Applications/Utilities
或.class
文件并将它们包装为应用程序包。有关Jar Bundler的信息,包括教程,在 Jar Bundler用户指南中提供。
从命令行构建有效的应用程序包,例如,在shell脚本中或者Ant文件,您需要按照以下步骤操作:
设置正确的目录层次结构。顶级目录应使用带有后缀.jar
的应用程序名称命名。
应用程序包的根目录下应该有一个Contents目录。它应包含MacOS目录和Resources目录。 Java目录应位于Resources目录中。
目录布局应如下所示:
YourApplicationName.app/
Contents/
MacOS/
Resources/
Java/
将.app
文件从JavaApplicationStub
复制到应用程序包的/System/Library/Frameworks/JavaVM.framework/Versions/Current/Resources/MacOS/
目录中。
制作MacOS
个文件在应用程序包的Info.plist
目录中。您可以从现有Java应用程序(例如Jar Bundler)中的示例开始,然后对其进行修改或从头开始生成全新的Java应用程序。请注意,除非您在此属性列表中设置了正确的属性,否则应用程序包不会启动,尤其是Contents
键。
在MainClass
中创建PkgInfo
文件} 目录。它应该是纯文本文件。如果您尚未使用ADC注册创建者代码,则内容应为Contents
。如果您已注册创建者代码,请将APPL????
替换为您的创建者代码。
将应用程序的图标文件放入????
目录。使用Contents/Resources/
中的Icon Composer获取有关创建图标文件的帮助。
将您的Java Developer/Applications/Utilities
或.jar
文件复制到.class
。
Contents/Resources/Java/
中的SetFile
设置捆绑位Finder属性。例如,/Developer/Tools/
。有关/Developer/Tools/SetFile -a B YourApplicationName.app
的更多信息,请参见手册页。 完成这些步骤后,您应该拥有一个包含Java应用程序的双击应用程序包。
答案 0 :(得分:2)
需要捆绑OSX应用,因此请阅读Oracle Java OSX Distribution和Apple Java Bundles。之后,您将能够通过命令行启动它们(只需要手动运行存根)。