在OS X

时间:2016-05-20 09:29:15

标签: java linux macos jar

使用Linux,我运行一些我用Java编写的程序,在带有清单文件的jar中压缩它们,然后将它们放在已添加到$ PATH的个人目录中,如下所示: program.jar file2 file2。它适用于我指向我的控制台的任何目录,我甚至可以program.jar file1 | lessprogram.jar file1 > output.txt。它们就像bin控制台程序一样工作。

但是在OS X上我无法复制相同的行为,我被迫使用java -jar program.jar运行它们,否则会说-bash program.jar: cannot execute binary file

有没有办法让jar像在OS X上的Linux一样运行?

编辑:

回答Jean-Baptiste Yunès

从命令行

如果使用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

< p>使用Contents/Resources/Java/中的SetFile设置捆绑位Finder属性。例如,/Developer/Tools/。有关/Developer/Tools/SetFile -a B YourApplicationName.app的更多信息,请参见手册页。

完成这些步骤后,您应该拥有一个包含Java应用程序的双击应用程序包。

1 个答案:

答案 0 :(得分:2)

需要捆绑OSX应用,因此请阅读Oracle Java OSX DistributionApple Java Bundles。之后,您将能够通过命令行启动它们(只需要手动运行存根)。