2013-02-27 27 views
7

Tôi đang xây dựng một ứng dụng Java trên máy tính để bàn. Nó sử dụng một khuôn khổ của bên thứ ba cho một số công việc cấp thấp (đó là trong C và tôi đã sử dụng JNA).Java 7 sẽ chạy trong 32 bit trên mac

Trên máy tính Windows của tôi, khi tôi làm Native.loadLibrary("EDSDK.dll", EdSdkLibrary.class, options);, nó hoạt động hoàn toàn tốt. Trên máy Mac khi tôi cố gắng làm Native.loadLibrary("EDSDK.framework", EdSdkLibrary.class, options); nó đã ném UnsatisfiedLinkError nói: mach-o, but wrong architecture

Phiên bản java 7 của tôi là 64 bit và khung là 32 bit. Trên một mac khác có chứa Java6, khi tôi chạy Java ở chế độ 32 bit, ứng dụng hoạt động tốt. Điều này xác nhận trường hợp ngoại lệ được ném là do không tương thích 32 bit và tôi chỉ cần sử dụng 32 bit (điều này hiển nhiên).

Đây là phần khó chịu - Trong tùy chọn Java 7, -d32 không hoạt động và Oracle không còn cung cấp Java 7 trong 32 bit nữa. Làm thế nào để chạy Java 7 của tôi trong 32 bit để tôi có thể sử dụng khung bên thứ ba? Mở JDK? Hoặc sử dụng Java 6 và sử dụng nó ở chế độ 32 bit. Nhưng Oracle không còn cung cấp Java 6 cho Mac.

Bất kỳ giải pháp thay thế nào khác ??

Trả lời

2

Bạn có thể tải xuống Apple Java 6 JDK, bao gồm một JVM 32 bit. Nhưng tôi nghi ngờ sẽ có rất nhiều trong cách cập nhật bảo mật trong tương lai cho Java 6, vì vậy bạn sẽ tốt hơn để có được một phiên bản 64 bit của khung nguyên gốc và sử dụng nó với Oracle Java 7.

Các vấn đề liên quan