Вопрос по eclipse-rcp, eclipse-plugin, jvm, java, swt – Невозможно загрузить 64-битные библиотеки SWT на 32-битной JVM (замена файла SWT)

22

Я пытаюсь решить эту проблему, но не знаю, где именноreplace SWT jar файл для Eclipse.

Текущая конфигурация системы:

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

Сообщение об ошибке:

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

Временное решение:

Link1: Understood the cause of the problem and i tried to replace 64-bit SWT to 32 Bit but i'm not sure whether i'm doing it right ?

downloaded 32-bit file swt-3.6.1-win32-win32-x86.zip Extracted the zip file Have files as shown below

enter image description here

copied swt.jar file navigated to C:\Program Files\eclipse\plugins removed 64-bit Swt file ( i.e org.eclipse.swt.win32.win32.x86_64.source_3.6.2.v3659c ) placed copied swt.jar file and relaunched

Still throws SAME ERROR

also tried renaming the swt.jar file to org.eclipse.swt.win32.win32.x86_64.source_3.6.2.v3659c

Still same ERROR

Link2: Suggested the alternative solution but couldn't resolve the problem.

Still same ERROR

I really don't want to uninstall 32-JVM and 32-Bit Eclipse and install corresponding 64 Bit versions.

Not an OPTION

Обходной путь послеpaulsm4 а такжеPaul Webster ответ & amp;i'm confused

Когда я попытался выполнить это, чтобы проверить JVM, версию JRE в 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" ) );

    }

}

Выход:

1.6.0_31-b05
JVM Bit size: 32

Однако, когда я попробовал в командной строке для Java - VERSION

enter image description here

Итак, моя система понимания имеет 64-битную JVM, где Eclispe читает 32-битную JVM. Так как же мне перевести систему на чтение 32-битной JVM?

@PaulWebster: когда я это сделал, Eclispe выдает ошибку & quot; Произошла ошибка. Смотрите файл журнала & quot; Mad-D
Было бы важно, что говорит файл журнала. Может быть, вы могли бы обновить свой вопрос с помощью "Попробовал это и получил эту запись в журнале" & quot; Paul Webster
Файл, который вы замените, являетсяorg.eclipse.swt.win32.win32.x86_64_3.6.2.v3659c.jar с swt.jar. Не тот, с источником в своем названии. Paul Webster
Что вызывает ошибку? Это ваш Eclipse или приложение, которое вы разрабатываете? Mario Marinato

Ваш Ответ

13   ответов
1

и она сразу заработала. Не нужно перекомпилировать весь пакет, просто замените файл swt.jar и убедитесь, что манифест приложения содержит его.

Привет Имрей, изEclipse Веб-сайт.
Где вы взяли 32-битную версию swt.jar?
0

Можно заставить Eclipse работать с JRE, или, по крайней мере, раньше, но зачем? Затмение намного счастливее с JDK.

Помните, что JRE, которая используется для запуска Eclipse, не обязательно должна быть JRE, которую Eclipse использует для запуска приложения.

PS. Я предполагаю, что проблема первоначального автора заключалась в том, чтобы запустить Eclipse, а не (как кажется, некоторые другие ответы) решают запустить Eclipse для запуска приложения.

27

которую вы определили в конфигурации запуска. Поскольку вы запускаете 32-битный Eclipse, вы запускаете / отлаживаете его 32-битные библиотеки SWT, и вам нужно будет запустить 32-битный JRE.

Ваша 64-битная JRE по любой причине является вашей установленной по умолчанию JRE.

Чтобы изменить это, сначала убедитесь, что у вас настроен 32-битный JRE в предпочтении Установленные JRE. Перейти к окну - & gt; Настройки и перейдите к Java - & gt; Установленные JRE:

Installed JREs

Вы можете нажать кнопку «Добавить» и перейти к 32-битной JVM.JAVA_HOME добавить это.

Затем в своей конфигурации запуска найдите приложение Eclipse и убедитесь, что для среды выполнения JRE задано 32-разрядное JRE, которое вы только что настроили:

Run Configuration

(Обратите внимание на поле со списком, которое плохо выделено.)

Не пытайтесь заменить банки SWT, которые, скорее всего, плохо кончатся.

А? Сообщение об ошибке говоритCannot load 64-bit SWT libraries on 32-bit JVM Это означает, что ему нужно получить либо 32-битный SWT, либо 64-битную JVM. Вы предлагаете добавить 32-битную JVM, которая у него уже есть.
Этот ответ очень вводит в заблуждение и не решает актуальную проблему. Ошибка говорит о том, что Eclipse использует 32-битную Java для компиляции приложения. Но проблема в том, что SWT находится в 64-битной версии !!! Итак, проблема в том, что загруженный SWT, вероятно, не 32-разрядный!
@ Imray Действительно, у него уже есть один, так как он запускает свою 32-битную установку Eclipse. Но у него также установлена 64-битная JRE, так как это значение по умолчанию в Eclipse. Я говорю емуchange his default JRE to the 32-bit version так что он совпадает с тем, который запустил Eclipse, и он может впоследствии связываться с 32-битными библиотеками SWT.
К вашему сведению, я сообщил об этом как об ошибке ... потому что у меня тоже такая же проблема. Скачал 32-битный SWT, попытался скомпилировать его с 32-битной Java, но я все еще получаю 64-битный SWT не может связать ошибку. Вы, ребята, должны голосовать, чтобы это было замеченоbugs.eclipse.org/bugs/show_bug.cgi?id=428855
3

ть свойства конфигурации запуска".

Где вы взяли 32-битную версию swt.jar?
Привет Имрей, изEclipse Веб-сайт.
1

т.е. 32-битные SWT-библиотеки должны соответствовать 32-битной JVM, и наоборот.

Я решил эту проблему, установив 64-битный jdk, 64-битный jre и, наконец, добавив установку пути jdk в переменных среды и добавив jre к затмению.

1

\ ProgramData \ Oracle \ Java \ javapath из моего пути, и он работал для меня.

Но убедитесь, что вы включили в свой путь адреса x64 JDK и JRE.

1

Откройте целевой редактор и перейдите к определению среды. Там вы можете установить архитектуру. Идея состоит в том, что при запуске приложения RCP будут загружаться только 32-битные библиотеки / пакеты SWT. Если у вас уже есть конфигурация во время выполнения, желательно также создать новую.

Target Editor in Eclipse

-1

\ ProgramData \ Oracle \ Java \ javapath из моего пути, и он работал для меня. Идеальный ответ, спасибо Никиль.

1

Я упустил из видуECLIPSE VERSION это было64Bit и 3,6

Я должен был убедиться, что это 32-битная Eclipse, 32-битная JVM, поэтому я удалил Eclipse & amp; все JVM для чистого запуска. Установил 32Bit JDK1.6 изВот и 32Bit Eclipse изВот

8

Используйте 32-разрядные библиотеки с 32-разрядной JVM, 64-разрядные библиотеки с 64-разрядной JVM, убедитесь, что версии соответствуютexactlyи не смешивать и сравнивать.

ПО МОЕМУ МНЕНИЮ...

PS: Вы можете иметь несколько JVM и / или несколько Eclipse, сосуществующих в одном блоке.

Я второй это. Просто получите 32-битное затмение, если у вас есть 32-битная JVM.
6

Я удалил C:\ProgramData\Oracle\Java\javapath с моего пути, и это сработало для меня.

и убедитесь, что вы включили адреса x64 JDK и JRE в свой путь.

Я столкнулся с той же проблемой "Oracle \ java" в ПУТИ. Как только я поместил свой JDK 1.8 перед другими java в пути, это работало как очарование
Моя система работала нормально до обновления Java. Это все, что нужно для того, чтобы это снова заработало.
1

Вот решение

В Eclipse нажмите «Windows» -> «Preferences» - «Java» - & gt; & quot; Установленные JRE & quot; ---- & gt; Выберите JDK, нажмите & quot; Изменить & quot ;.

Проверьте ваш путь JDK, соответствует ли он вашему пути в переменных среды, определенных в системе. если нет, измените его на «путь» определенный каталог.

0

(Этот путь в моем случае может отличаться в вашем случае). Переименуйте папку ORACLE с другой строкой имени ORACLE_OLD. И перезапустите STS / IDE. Это работает для меня

Похожие вопросы