2010-05-27 43 views
39

Ứng dụng của tôi sẽ ném ngoại lệ bên dưới.SWT trên Windows 64-bit

Exception in thread "main" java.lang.UnsatisfiedLinkError: Cannot load 32-bit SW T libraries on 64-bit JVM.

Cách giải quyết vấn đề này? Tên tệp jar cần thiết là gì?

Trả lời

41

Trên JVM 64 bit, bạn cần SWT 64 bit. phiên bản hiện tại có thể được tải về ở đây:

http://archive.eclipse.org/eclipse/downloads/drops/R-3.6.1-201009090800/index.php#SWT

Lưu ý hai tải đầu tiên, đầu tiên là dành cho x32, một cho x64.

Lưu ý: Ngay cả trên Windows 64 bit, nếu bạn sử dụng JVM 32 bit, bạn vẫn cần phiên bản SWT 32 bit!

+3

Điều này là đúng, nhưng chỉ cần lưu ý nhanh rằng nếu bạn không có quyền kiểm soát mà SWT được sử dụng (ví dụ: phát triển một trình cắm thêm trên hệ thống 64 bit với JVM 64 bit của bạn cho ứng dụng RCP 32 bit), bạn chỉ nên cài đặt và sử dụng JVM 32 bit để khởi chạy sản phẩm thay vì sửa đổi nền tảng mục tiêu RCP của bạn (xem câu trả lời của Mario Marinato). – Caspar

+0

@Casper: Đúng. – Daniel

+2

Phiên bản mới của: [SWT 64 bit] (http://www.eclipse.org/downloads/download.php?file=/eclipse/downloads/drops4/R-4.2.1-201209141800/swt-4.2.1 -win32-win32-x86_64.zip) – Adil

1

Bạn chỉ đơn giản là xây dựng dựa trên phiên bản SWT sai. Hoặc tải về Eclipse 64bit hoặc lấy gói delta và xây dựng dựa trên môi trường đích chính xác.

+0

"Gói delta" là gì? Tôi tò mò về một giải pháp chung, bởi vì tôi rất thích làm cho ứng dụng SWT của tôi tự động chọn đúng lọ. Ngoài ra, bạn nên nhớ rằng SWT cần phải giống phiên bản với máy ảo của bạn - không nhất thiết phải là O/S của bạn. –

+0

Gói delta sẽ không cho phép bạn làm bất cứ điều gì 'động', nó chỉ mang lại cho bạn khả năng xây dựng cho bất kỳ mục tiêu nào từ bất kỳ mục tiêu nào. http://louismrose.wordpress.com/2009/01/23/installing-the-rcp-delta-pack-for-eclipse/ – andyczerwonka

6

Tôi gặp phải sự cố tương tự vài tuần trước. Chúng tôi phát triển một ứng dụng RCP phải sử dụng SWT 32 bit, nhưng chúng tôi làm việc trên các máy 64bit.

Điều chúng tôi phải làm là thay đổi cấu hình của Eclipse để nó chỉ vào một JVM 32 bit. Chúng tôi đã làm nó trên Window -> Preferences -> Java -> JRE được cài đặt. Trên trang tùy chọn này, chúng tôi đã thay đổi tất cả các tham chiếu từ "Tệp chương trình" thành "Tệp chương trình (x86)".

Tôi hy vọng nó sẽ giúp bạn bằng cách nào đó.

+0

Nếu bạn đang phát triển một ứng dụng RCP 32 bit trong phiên bản 64 bit của Eclipse, bạn cũng phải cấu hình nền tảng đích của ứng dụng để sử dụng một cách rõ ràng kiến ​​trúc x86. Nếu không thì Eclipse PDE sẽ vẫn thiết lập các phiên bản 64 bit của các thư viện SWT như các phụ thuộc của plugin. –

2

Đối với liên kết mới nhất để SWT tải thư viện: SWT project page

+0

+1 Tôi chỉ đang tìm kiếm, cảm ơn –

2

câu trả lời của tôi là hơn ít biên soạn trên đăng tải câu trả lời, đặc biệt là những nhận xét của @ClickUpvote người dùng được cung cấp (theo quan điểm của tôi) là câu trả lời tốt nhất. Vì vậy, đây đó là, tôi thử nghiệm nó ngay trước khi đăng nó:

Nếu ứng dụng của bạn ném ngoại lệ bên dưới (Trên Windows 7 64 bit, với JVM 64)

Exception in thread "main" java.lang.UnsatisfiedLinkError : Không thể tải các thư viện SW T 32 bit trên JVM 64 bit.

Sau đó, giải pháp như sau: Trên JVM 64 bit, bạn cần SWT 64 bit.

phiên bản hiện tại có thể được tải về như mô tả dưới đây - khá tốt ẩn:

Stable

Windows, Linux, OS X, more...

Windows (x86_64) (phiên bản được hỗ trợ) (http) 6.3 MB swt-4.4-win32-win32-x86_64.zip

Và đó chính xác là phiên bản bạn cần.

1

Các liên kết đó đều đã lỗi thời một chút để tải xuống phiên bản 64 bit. Hãy thử cái này: http://jarfiles.pandaidea.com/swt.html, được tìm thấy sau một giờ googling.

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