繁体   English   中英

在适用于Mac OS X的Swing应用程序中嵌入JRE

[英]Embedding a JRE in a Swing application for Mac OS X

我必须发布带有嵌入式JRE的swing应用程序。 带有application + JRE + .bat / .sh的压缩存档为Windows和Linux提供了技巧。 用户下载zip,解压缩并启动应用程序。 完善。

但是现在,我必须为Mac OS X提供相同的功能。我已经阅读/被告知有很多不同的事情(禁止在Mac上发布JRE,相反,Mac上总是有JRE等。 ..),所以我真的很困惑我可以做什么。

有没有人做过这样的事情? 你是如何解决Mac应用程序部署的? 作为奖励,在Mac上分发我的应用程序的最佳格式是什么(zip?)?

看一下java.net上的appbundler项目。 它提供了一个Ant任务,它将您的应用程序打包为普通的Mac .app软件包,并且可以选择包含嵌入式JRE。

Mac上的整个Java环境有点混乱,因为我们仍然处于过渡时期,Apple 6提供和维护Java 6版本,Java 7版本直接来自Oracle。 通过提到的jarbundler项目a_horse_with_no_name是用于包裹了JAR作为.app ,将在附带的Mac OS X 10.5 / 6/7的Apple提供的Java 6运行bundle,但不是在Oracle的Java 7,相反地appbundler目标Oracle Java 7及其.app包不能在Java 6上运行。

如果你想定位运行10.7或10.8的最新Mac,特别是如果你想通过Mac App Store分发你的应用程序,那么你应该使用appbundler并捆绑一份JRE。 如果您不想通过商店分发,那么嵌入式JRE是可选的。 如果您的应用程序可以在Java 6上运行,那么使用jarbundler定位Apple Java 6将意味着您的应用程序可以在较旧的(<= 10.6)Mac上运行。 但是,当他们尝试运行您的应用程序时,任何拥有最新Mac但只有Java 7的人都会被提示下载并安装Java 6。

只要.app内的所有Contents/MacOS目录(以及嵌入式JRE中的相应文件,如果适用)都在zip文件中标记了执行权限,就可以将.app分发到.zip存档中。 如果您使用Ant构建,则需要使用带有正确文件filemode <zipfileset>

最简单的方法使用与通过Java Web Start部署的任何其他平台相同的JAR。 我从未尝试过使用它来安装JRE。

提供更多的Mac友好的体验, 最好的方法需要你来包装你的应用程序包JAR(S),在文章中讨论引用真实这里 首选的传递格式是压缩磁盘映像.dmg

Mac OS X的Java部署选项一文比较了这两个选项。 这个游戏是一个可以以任何方式启动的例子。

附录:对于好奇,Mac OS X Finder将.jnlp文件视为文档,默认情况下使用JWS启动程序打开。 我在dock文件夹中保留了一些常用的.jnlp文件的文件夹,以便快速访问。 Java Preferences控制面板允许管理缓存的应用程序。 选择安装快捷方式会在目标文件夹中创建一个简单的Mac应用程序包,并且可以像编辑其他任何内容一样编辑包含的Info.plist 自定义.plist的决定取决于应用程序所需的功能:屏幕菜单栏,停靠栏名称和图标,JNI路径等。

我认为您可以放心地假设JRE已经存在于Mac上。

最好的格式(所以我被告知 - 我自己不是Mac用户)是“App”包的tar.gz (保存文件属性)。

您可以使用“jarbundler”( http://sourceforge.net/projects/jarbundler/ )创建一个适当的Mac“捆绑”,可以毫不费力地提取。 确保捆绑包中的Stub在Ant tar任务中标记为“可执行”。

我认为如果安装了多个JRE,会出现一些问题。 在这种情况下,必须使用正确的Stub来启动应用程序所需的JRE版本。 如果我/System/Library/Frameworks/JavaVM.framework/Resources/MacOS/JavaApplicationStub话,这个Stub位于/System/Library/Frameworks/JavaVM.framework/Resources/MacOS/JavaApplicationStub

有一个页面表明Java7和jarbundler可能存在问题: http ://informagen.com/JarBundler/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM