lion – 安装32位Java 7 OpenJDK

动机

我有一个专有的java应用程序,曾经在Snow Leopard下工作但在Lion下失败,有以下backtrace:

Exception in thread "AWT-EventQueue-0" java.lang.IllegalArgumentException: Invalid display mode
    at apple.awt.CGraphicsDevice.setDisplayMode(CGraphicsDevice.java:472)
    at apple.awt.CGraphicsDevice.setFullScreenWindowSynchronized(CGraphicsDevice.java:363)
    at apple.awt.CGraphicsDevice.access$000(CGraphicsDevice.java:25)
    at apple.awt.CGraphicsDevice$1SetFullScreenAction.run(CGraphicsDevice.java:326)
    at apple.awt.CGraphicsDevice.setFullScreenWindow(CGraphicsDevice.java:331)

setFullScreenWindow的调用仅传递null,即它尝试从全屏恢复到窗口模式.仅在连接投影仪时才会出现错误,因此屏幕分辨率调整为1024×768.看起来像Java VM中的一个错误.

看看the code,在我看来,OpenJDK 7可能已经解决了这个问题.所以我想尝试一下.

方法失败

但是,即使在下载Java SE 7u7 from Oracle之后,我也无法使用它来执行应用程序,因为该应用程序使用了一些32位本机代码,而这个JVM不支持:

> /Library/Java/JavaVirtualMachines/jdk1.7.0_07.j/Contents/Home/bin/java -d32 -version
Error: This Java instance does not support a 32-bit JVM.
Please install the desired version.

核心问题

所以我的核心问题是:是否可以在Mac OS X Lion上安装最新版本的OpenJDK 7的32位版本?最好是作为预编译的包,但如果没有,那么如何编写自己的编写良好的指令也可以满足我的目的.

解决方法:

我似乎找到了预编译OpenJDK的源代码:
http://code.google.com/p/openjdk-osx-build/
OpenJDK 7构建有通用性,确实在32位模式下运行.
最新版本是7u6,这与Oracle提供的7u7不同,但应该是最近的,以满足我的要求.

唉,我原来的问题仍然存在,所以我可能不得不自己编译我的JVM.我发现在OpenJDK mercurial repositories中有一个jdk7u-osx repository,它的README-builds file提供了关于如何构建东西的合理指示.关于源滴的部分显得特别重要.我仍然有一些麻烦,但这些似乎是构建过程中的错误或类似的,所以我会用macosx-port-dev mailing list把它们拿走.

上一篇:lion – 启动MySQL生成“服务器退出而不更新PID文件”


下一篇:lion – 为什么Java在我的机器上消耗100%的CPU?