Java可执行jar不能在OS X上作为./program.jar执行

Java可执行jar不能在OS X上作为./program.jar执行,java,linux,macos,jar,Java,Linux,Macos,Jar,使用Linux,我运行我用Java编写的一些程序,方法是将它们压缩到一个带有清单文件的jar中,然后将它们放在一个个人目录中,该目录已添加到我的$PATH中,如下所示: program.jar文件2文件2。它在我指向控制台的任何目录中都能正常工作,我甚至可以执行program.jar file1 | less或program.jar file1>output.txt。它们的工作方式就像是bin控制台程序一样 但是在OSX上,我无法复制相同的行为,我被迫使用java-jar program.jar

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

但是在OSX上,我无法复制相同的行为,我被迫使用
java-jar program.jar
运行它们,否则它会说
-bash program.jar:无法执行二进制文件

有没有一种方法可以让jar像在OS X上的Linux中那样工作

编辑:

答复感谢:



从命令行

如果使用Xcode Organizer的模板之一构建新的Java Swing应用程序,Xcode会自动生成一个应用程序包,其中包含一个默认的
Info.plist
文件。您可以直接在Xcode中或使用属性列表编辑器对
Info.plist
文件进行微调。有关使用Xcode进行Java开发的更多信息,请参阅Xcode帮助(可从Xcode中的“帮助”菜单获得)。

如果要将现有Java应用程序转换为OS X Java应用程序,请使用
/Developer/Applications/Utilities
中提供的Jar Bundler应用程序。它允许您将现有的
.class
.jar
文件打包为应用程序包。Jar Bundler用户指南中提供了有关Jar Bundler的信息,包括教程。

要从命令行(例如,在shell脚本或Ant文件中)构建有效的应用程序捆绑包,您需要遵循以下步骤:

设置正确的目录层次结构。顶级目录应以应用程序的名称命名,后缀为
.app

应用程序捆绑包的根目录中应包含内容目录。它应该包含一个MacOS目录和一个Resources目录。Java目录应该位于Resources目录中。

目录布局应该如下所示:

YourApplicationName.app/Contents/MacOS/Resources/Java/从
/System/Library/Frameworks/JavaVM.framework/Versions/Current/Resources/MacOS/
进入应用程序包的
MacOS
目录。

在应用程序包的
目录中创建
Info.plist
文件。您可以从现有Java应用程序(如Jar Bundler)的一个示例开始,并对其进行修改或从头生成一个全新的示例。请注意,除非在此属性列表中设置了正确的属性,特别是
MainClass
键,否则应用程序包不会启动。

目录中创建
PkgInfo
文件。它应该是一个纯文本文件。如果您尚未向ADC注册创建者代码,则内容应为
APPL???
。如果您已注册创建者代码,请用创建者代码替换

将应用程序的图标文件放入
目录/Resources/
中。使用
Developer/Applications/Utilities
中的Icon Composer来帮助创建图标文件。

将Java
.jar
.class
文件复制到
目录/Resources/Java/

使用
/Developer/Tools/
中的
SetFile>设置bundle位查找器属性。例如,
/Developer/Tools/SetFile-abyourApplicationName.app
。有关
SetFile
的更多信息,请参阅手册页。

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

OSX应用程序需要捆绑,请阅读并查看。之后,您可以通过命令行启动它们(只需要求手动运行存根)。

请注意,Unix系统不能将jar文件作为标准程序执行。谢谢,我也这么认为,我想知道是什么让它工作,这就是我想做的。我也开始将代码移植到C++。这很可能是你正在使用的特定Linux发行版中的特定设置。制作可执行的java档案是一门艺术。我建议您在离开java之前研究各种解决方案。谢谢,我用您的答案更新了我的问题。敬礼!我是P7计算语言学家,我协助你们学习系统和C语言课程,非常好。 YourApplicationName.app/ Contents/ MacOS/ Resources/ Java/