2013-02-27 56 views
7

我正在构建一个桌面Java应用程序。它使用第三方框架进行一些低级别的工作(它使用C语言,我使用了JNA)。Java 7将在32位的mac上运行

在我的Windows机器上,当我做Native.loadLibrary("EDSDK.dll", EdSdkLibrary.class, options);时,它工作得很好。在Mac上,当我尝试做Native.loadLibrary("EDSDK.framework", EdSdkLibrary.class, options);它投掷UnsatisfiedLinkError说:mach-o, but wrong architecture

我的Java 7版本是64位和框架是基于32位的。在包含Java6的不同mac上,当我以32位模式运行Java时,该应用程序运行良好。 这证实了抛出的异常是因为32位不兼容,我只需要使用32位(这是显而易见的)。

这是令人讨厌的部分 - 在Java 7中,-d32选项不起作用,Oracle不再提供32位的Java 7。我如何在32位运行我的Java 7,以便我可以使用第三方框架?打开JDK?或者使用Java 6并以32位模式使用它。但是Oracle不再为Mac提供Java 6。

任何其他的选择?

回答

2

您可以下载Apple Java 6 JDK,它包含一个32位JVM。但是我怀疑未来Java 6的安全更新会有太多的问题,所以最好能够获得64位版本的本地框架并将其与Oracle Java 7一起使用。