加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

捆绑Java 7 .jar for Mac

发布时间:2020-12-14 16:46:47 所属栏目:Java 来源:网络整理
导读:我创建了一个需要 Java 7的.jar.我有 Java 7(JDK和JRE),我可以双击运行.jar.但是,我想将其打包成一个应用程序. 我尝试过:使用Apple的Jar Bundler工具,我成功创建了一个应用程序;但是,当我运行它,它很快就会在码头中出现并消失.当我从终端运行内部文件JavaAp
我创建了一个需要 Java 7的.jar.我有 Java 7(JDK和JRE),我可以双击运行.jar.但是,我想将其打包成一个应用程序.

我尝试过:使用Apple的Jar Bundler工具,我成功创建了一个应用程序;但是,当我运行它,它很快就会在码头中出现并消失.当我从终端运行内部文件JavaApplicationStub时,我得到:

Exception in thread "main" java.lang.UnsupportedClassVersionError: org/lcmmun/kiosk/gui/Kiosk : Unsupported major.minor version 51.0
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClassCond(ClassLoader.java:631)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:615)
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:283)
    at java.net.URLClassLoader.access$000(URLClassLoader.java:58)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:197)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:247)
    at apple.launcher.LaunchRunner.loadMainMethod(LaunchRunner.java:56)
    at apple.launcher.LaunchRunner.run(LaunchRunner.java:112)
    at apple.launcher.LaunchRunner.callMain(LaunchRunner.java:51)
    at apple.launcher.JavaApplicationLauncher.launch(JavaApplicationLauncher.java:52)

其中根据“unsupportedclassversionerror unsupported major.minor version 51.0 unable to load class”表示我没有安装Java 7.但是我愿意.

所以我的假设是JavaApplicationStub是Java 7不兼容的.

我也听说过an ANT task完成同样的任务,但这似乎太复杂了,我不知道如何使用ANT.如果这真的是解决办法,那我很乐意学习.

编辑:我现在也试过Eclipse的Export>其他> Mac OS应用程序包.这也失败了.

我跑了10.8山狮,64位.

解决方法

问题

你绝对是对的,假设苹果JavaApplicationStub位于这里:

>系统/库/框架/ JavaVM.framework / Resources / MacOS / JavaApplicationStub

仅适用于苹果自己为Mac OS X构建的Java Packages.

原因

苹果公司正在停止自己的Java系统软件包,并且只在其淡出进程中支持Java 6. Oracle已经从10.7.3开始,为Mac OS X提供了Java 7.苹果甚至停止像Jar Bundler.app这样的开发工具,没有任何通知,你可以在这篇文章中看到:

> Why is Jar Bundler gone in Mac OS X Mountain Lion 10.8.2

有些人甚至拼命地尝试将Info.plist中的JVMVersion属性值(由Apple JavaApplicationStub读取)从已记录的文字1.6或1.6增加到1.7的无证文字.这也不会奏效,即使您已经安装了Oracles Java 7软件包,您也可以使用这样的对话框.

所以很可能你会发现退休的苹果Java 6世界和未来的Oracle Java 7世界之间的其他不一致.

要构建基于Oracles Java 7的应用程序包,您需要使用包含Oracles JavaAppLauncher的Oracles AppBundler Ant任务.现在只支持用于Mac OS X的Oracles Java 7,并且不会向后兼容苹果自己的Java系统软件包.

现在的好消息是,您可以将Oracles Java 7 JRE内联到您的应用程序包中.它将被包含在目录中

>内容/插件

在应用程序包中,例如

> Contents / PlugIns / jdk1.7.0_17.jdk

这意味着你的应用程序包完全是自包含的,并且可以用于App Store部署.

但你不必这样做.您还可以依赖安装的Oracle Java 7软件包.

为了更详细的答案,你也应该结帐:

> Application is using Java 6 from Apple instead of Java 7 from Oracle on Mac OS X?

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读