2012-06-13 31 views
19

Tôi đang cố gắng gỡ lỗi vấn đề này nhưng không chắc nơi chính xác tôi cần thay thế tệp SWT jar cho Eclipse.Không thể tải các thư viện SWT 64 bit trên JVM 32 bit (thay thế tệp SWT)

hiện tại hệ thống Config: Tin nhắn

Eclipse Helios 3.6 - 32 Bit 
JDK 1.6 
JVM - 32 Bit 
Windows 7 - 64 Bit 

Lỗi:

java.lang.UnsatisfiedLinkError: Cannot load 64-bit SWT libraries on 32-bit JVM 
    at org.eclipse.swt.internal.Library.loadLibrary(Library.java:194) 
    at org.eclipse.swt.internal.Library.loadLibrary(Library.java:174) 
    at org.eclipse.swt.internal.C.<clinit>(C.java:21) 
    at org.eclipse.swt.widgets.Display.<clinit>(Display.java:138) 
    at org.eclipse.ui.internal.Workbench.createDisplay(Workbench.java:687) 
    at org.eclipse.ui.PlatformUI.createDisplay(PlatformUI.java:161) 
    at de.vogella.rcp.intro.first.Application.start(Application.java:18) 
    at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196) 
    at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110) 
    at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79) 
    at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:369) 
    at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
    at java.lang.reflect.Method.invoke(Method.java:597) 
    at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:620) 
    at org.eclipse.equinox.launcher.Main.basicRun(Main.java:575) 
    at org.eclipse.equinox.launcher.Main.run(Main.java:1408) 
    at org.eclipse.equinox.launcher.Main.main(Main.java:1384) 
An error has occurred. See the log file 

Cách giải quyết:

  1. Link1: Hiểu nguyên nhân của vấn đề và tôi đã cố gắng để thay thế 64-bit SWT đến 32 Bit nhưng tôi không chắc liệu tôi có làm đúng không?

    tải về 32-bit tập tin swt-3.6.1-win32-win32-x86.zip Trích file zip Có file như hình dưới đây

    enter image description here

    sao chép tập tin swt.jar chuyển đến C: \ Program Files \ eclipse \ plugins loại bỏ tập tin SWT 64-bit (tức org.eclipse.swt.win32.win32.x86_64.source_3.6.2.v3659c) được rải sao chép tập tin swt.jar và bắt đầu lại

    Tuy nhiên ném LỖI CÙNG

    cũng đã cố gắng đổi tên các tập tin swt.jar để org.eclipse.swt.win32.win32.x86_64.source_3.6.2.v3659c

    Tuy nhiên cùng LỖI

  2. Link2: Đề xuất giải pháp thay thế nhưng không thể giải quyết được sự cố.

    Tuy nhiên cùng LỖI

  3. tôi thực sự không muốn gỡ bỏ cài đặt 32-JVM và 32-Bit Eclipse và cài đặt tương ứng với phiên bản 64 Bit.

    Không một OPTION

Cách giải quyết Sau khi paulsm4Paul Webster phản ứng & tôi là nhầm lẫn

Khi tôi đã cố gắng thực hiện này để kiểm tra JVM, phiên bản JRE trong Eclipse

package javaVersion; 

public class JavaVersion 
{ 

    public static void main(String[] args) 
    { 
     System.out.println("JRE Version :" + System.getProperty("java.runtime.version")); 
     System.out.println("JVM Bit size: " + System.getProperty("sun.arch.data.model")); 

    } 

} 

Output:

1.6.0_31-b05 
JVM Bit size: 32 

Tuy nhiên khi tôi đã cố gắng trên dòng lệnh cho JAVA - VERSION

enter image description here

Vì vậy, hệ thống hiểu biết của tôi có 64bit JVM nơi như Eclispe đang đọc 32 Bit JVM. Vậy làm thế nào tôi có thể chuyển hướng hệ thống để đọc 32 bit JVM?

+0

Tệp bạn sẽ thay thế là tệp 'org.eclipse.swt.win32.win32.x86_64_3.6.2.v3659c.jar' bằng swt.jar. Không phải là người có nguồn trong tên của nó. –

+0

Điều gì làm tăng lỗi? Nó là Eclipse của bạn hay ứng dụng bạn đang phát triển? –

+0

@PaulWebster: khi tôi đã làm điều đó Eclispe ném một lỗi "Một lỗi đã xảy ra. Xem tập tin đăng nhập" –

Trả lời

27

Eclipse sẽ khởi chạy ứng dụng của bạn với bất kỳ JRE nào bạn đã xác định trong cấu hình khởi chạy của bạn. Vì bạn đang chạy Eclipse 32-bit, bạn đang chạy/gỡ lỗi đối với các thư viện SWT 32 bit của nó và bạn sẽ cần chạy một JRE 32 bit.

JRE 64 bit của bạn, vì bất kỳ lý do gì, JRE được cài đặt mặc định của bạn.

Để thay đổi điều này, trước tiên hãy đảm bảo bạn có JRE 32 bit được định cấu hình trong tùy chọn JRE được cài đặt. Tới Window -> Preferences và điều hướng đến Java -> JRE cài đặt:

Installed JREs

Bạn có thể bấm Add và tìm đến bạn 32-bit JVM của JAVA_HOME để thêm vào.

Sau đó, trong Run Cấu hình của bạn, tìm ứng dụng Eclipse của bạn và chắc chắn rằng Runtime JRE được thiết lập để JRE 32-bit, bạn chỉ cấu hình:

Run Configuration

(Lưu ý combobox mà chưa được nhấn mạnh.)

Đừng thử thay thế các lọ SWT, điều đó có thể sẽ kết thúc kém.

+1

Huh? Thông báo lỗi nói 'Không thể tải các thư viện SWT 64 bit trên JVM 32 bit có nghĩa là anh ấy cần có một SWT 32 bit hoặc một JVM 64 bit. Bạn đang đề nghị anh ta thêm một JVM 32 bit, mà anh ta đã có. – CodyBugstein

+0

@Imray Thật vậy, anh ta đã có một, vì đó là cách anh ta đang chạy bản cài đặt Eclipse 32-bit của mình. Nhưng anh ta cũng đã cài đặt JRE 64 bit, vì đó là mặc định trong Eclipse. Tôi đang nói với anh ta để * thay đổi JRE mặc định của mình thành phiên bản 32 bit * để nó khớp với phiên bản khởi chạy Eclipse và sau đó anh ta có thể liên kết với các thư viện SWT 32 bit. –

+0

Câu trả lời này rất gây hiểu lầm và không giải quyết được vấn đề thực tế. Lỗi nói rằng Eclipse đang sử dụng Java 32 bit để biên dịch ứng dụng. Nhưng vấn đề là SWT là trong 64-Bit !!! Vì vậy, vấn đề là SWT tải về có lẽ không phải là 32-bit! – roosevelt

8

Vâng, duh :) SWT sử dụng JNI ... và JNI hoàn toàn là nền tảng cụ thể.

Sử dụng thư viện 32 bit với JVM 32 bit, thư viện 64 bit với JVM 64 bit, đảm bảo các phiên bản khớp với chính xác và không trộn lẫn.

IMHO ...

PS: Bạn có thể có nhiều JVM và/hoặc nhiều Eclipse cùng tồn tại trên cùng một hộp.

+0

Tôi làm điều này lần thứ hai. Chỉ cần có nhật thực 32 bit nếu bạn có một JVM 32 bit. –

1

Cảm ơn rất nhiều bạn!

tôi bỏ tôi ECLIPSE VERSION nó là 64Bit và 3,6

tôi phải chắc chắn rằng nó 32Bit Eclipse, 32 Bit JVM vì vậy tôi gỡ bỏ cài đặt Eclipse & tất cả JVM cho đầu sạch. Đã cài đặt 32Bit JDK1.6 từ here và 32Bit Eclipse từ here

1

Tôi vừa thay thế gói swt.jar trong gói của mình bằng phiên bản 64bit và nó hoạt động ngay lập tức. Không cần phải biên dịch lại toàn bộ gói, chỉ cần thay thế tệp swt.jar và đảm bảo tệp kê khai ứng dụng của bạn bao gồm nó.

+0

Bạn lấy phiên bản 32-bit swt.jar ở đâu? – CodyBugstein

+0

Hi Imray, từ trang web [Eclipse] (http://eclipse.org). – sijpkes

1

Tôi cũng phải đối mặt với cùng một vấn đề một thời gian dài trước đây.

Đây là Giải pháp

Trong Eclipse Bấm vào "Windows" -> "Preferences" ----> "Java" ---> "JRE cài đặt" ----> Chọn JDK, nhấp vào "Chỉnh sửa".

Kiểm tra đường dẫn JDK của bạn, có theo đường dẫn của bạn trong các biến môi trường được xác định trong hệ thống hay không. nếu không, sau đó thay đổi nó thành "đường dẫn" được xác định thư mục.

3

Chỉ cần thêm -d32 vào đối số VM trong "Chỉnh sửa thuộc tính cấu hình khởi chạy".

0

Cài đặt JDK.

Có thể làm cho Eclipse chạy với JRE, hoặc ít nhất nó từng là, nhưng tại sao lại bận tâm? Eclipse vui hơn nhiều với JDK.

Hãy nhớ rằng JRE được sử dụng để chạy Eclipse không phải là JRE mà Eclipse sử dụng để chạy một ứng dụng.

PS. Tôi giả định ở đây rằng vấn đề của poster ban đầu là làm cho Eclipse bắt đầu, và không (như một số câu trả lời khác dường như giải quyết) để Eclipse bắt đầu một ứng dụng.

5

tôi gỡ bỏ C: \ ProgramData \ Oracle \ Java \ javapath từ con đường của tôi, và nó làm việc cho tôi.

và đảm bảo bạn bao gồm các địa chỉ JDK và JRE x64 trong đường dẫn của mình.

+0

Hệ thống của tôi hoạt động tốt trước bản cập nhật Java. Đây là tất cả những gì cần làm để nó hoạt động trở lại. –

1

Kiểm tra định nghĩa đích nếu bạn đang làm việc với dự án RCP-SWT.

Mở trình chỉnh sửa đích và điều hướng đến định nghĩa môi trường. Ở đó bạn có thể thiết lập kiến ​​trúc. Ý tưởng là bằng cách khởi động ứng dụng RCP của bạn thì chỉ có các gói/thư viện SWT 32 bit sẽ được tải. Nếu bạn đã có cấu hình thời gian chạy thì cũng nên tạo cấu hình mới.

Target Editor in Eclipse

1

Tôi đã gỡ bỏ C: \ ProgramData \ Oracle \ Java \ javapath từ con đường của tôi, và nó làm việc cho tôi.

Nhưng hãy đảm bảo bạn bao gồm các địa chỉ JDK và JRE x64 trong đường dẫn của mình.

-1

Tôi đã xóa C: \ ProgramData \ Oracle \ Java \ javapath khỏi đường dẫn của tôi và nó đã hoạt động đối với tôi. Câu trả lời hoàn hảo, Cảm ơn Nikil.

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