我正在使用安装了Oracle的Java 7的Mac OS X测试我当前的应用程序.而是使用Oracle的Java 7,它使用的是Apple的Java 6.的默认的系统输出java -version被示出7.
我尝试了不同网站中提到的大部分内容,但我无法解决此问题.
JAVA_HOME 也正确设置.
我仅将Mac用于测试目的.我真的需要一些指导.
当我通过选择JRE 7运行Eclipse时,它运行正常.因此,应用程序没有任何问题.我在Mac OS X上遗漏了一些东西.
我的Java系统环境如下所示:
OS X版本
10.8
/usr/libexec/java_home -V
Matching Java Virtual Machines (3):
1.7.0_12, x86_64: "Java SE 7" /Library/Java/JavaVirtualMachines/jdk1.7.0_12.jdk
1.6.0_37-b06-434, x86_64: "Java SE 6" /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
1.6.0_37-b06-434, i386: "Java SE 6" /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
/Library/Java/JavaVirtualMachines/jdk1.7.0_12.jdk/Contents/Home
Run Code Online (Sandbox Code Playgroud)/usr/libexec/java_home
/Library/Java/JavaVirtualMachines/jdk1.7.0_12.jdk/Contents/Home
Run Code Online (Sandbox Code Playgroud)echo $JAVA_HOME
/Library/Java/JavaVirtualMachines/jdk1.7.0_12.jdk/Contents/Home/
Run Code Online (Sandbox Code Playgroud)JAVA_ARCH 没有设定
/Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin/java -version
java version "1.7.0_12-ea"
Run Code Online (Sandbox Code Playgroud)ls /Library/Java/JavaVirtualMachines
jdk1.7.0_12.jdk
Run Code Online (Sandbox Code Playgroud)/System/Library/Frameworks/JavaVM.framework/Commands/java -version
java version "1.6.0_37"
Run Code Online (Sandbox Code Playgroud)我想我现在的JDK指的是错误的.
我创建了一个需要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)
Run Code Online (Sandbox Code Playgroud)
根据" unsupportedclassversionerror不支持major.minor版本51.0无法加载类 ",意味着我没有安装Java 7.但是我愿意.
所以我的假设是JavaApplicationStubJava 7不兼容.
我也听说过要完成同样任务的ANT任务,但它似乎太复杂了,我不知道如何使用ANT.如果这确实是解决方案,我会很乐意学习.
编辑:我现在也尝试过Eclipse的Export> Other> Mac OS Application Bundle.这也失败了.
我正在运行10.8 Mountain …
当我将我移动JMenuBar到Mac OS X上的屏幕菜单栏时,它会留下一些空白区域,菜单将出现在我的窗口中; 我需要删除那个空间.我在用
System.setProperty("apple.laf.useScreenMenuBar", "true")
Run Code Online (Sandbox Code Playgroud)
将我移动JMenuBar到屏幕菜单栏.我的朋友使用Mac报告,如果我没有设置该属性,这将留下一些丑陋的垂直空间,菜单将驻留在该空间中.解决此问题的最佳方法是什么?
编辑:这是我的来源的一个例子:
public static void main(String[] args) {
System.setProperty("apple.laf.useScreenMenuBar", "true");
System.setProperty("com.apple.mrj.application.apple.menu.about.name", "Name");
JFrame frame = new JFrame("Gabby");
final DesktopMain dm = new DesktopMain();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(dm);
frame.setSize(160, 144);
frame.setLocationRelativeTo(null);
frame.setIgnoreRepaint(true);
JMenuBar menuBar = new JMenuBar();
JMenu fileMenu = new JMenu("File");
menuBar.add(fileMenu);
// Populating the menu bar code goes here
frame.setJMenuBar(menuBar);
frame.setVisible(true);
}
Run Code Online (Sandbox Code Playgroud)