【发布时间】:2012-08-19 14:57:39
【问题描述】:
我创建了一个需要 Java 7 的 .jar。我有 Java 7(JDK 和 JRE),我可以双击运行 .jar。但是,我想将其打包到应用程序中。
我尝试了什么:使用Apple的Jar Bundler工具,我成功创建了一个应用程序;但是,当我运行它时,它会迅速出现并消失在 Dock 中。当我从终端运行内部文件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 > Other > Mac OS Application Bundle。这也失败了。
我正在运行 10.8 Mountain Lion,64 位。
【问题讨论】:
-
“我创建了一个需要 Java 7 的 .jar” 它使用了哪些 Java 7 功能? “我想将它打包到一个应用程序中。” 为什么不使用Java Web Start 部署它?
-
@AndrewThompson:Java Web Start - 很有趣。我需要重写很多代码吗?我有文件加载/保存和
Desktop.open,还有大量的 Swing 代码。 -
听起来不错。我假设支持 Preferences API (
java.util.prefs)? -
受信任的应用程序支持所有 J2SE 类。使用 JWS 启动。