UnsatisfiedLinkError при запуске хост-режима GWT - PullRequest
0 голосов
/ 29 августа 2009

Я не могу запустить свое приложение GWT в размещенном режиме (отладка как -> веб-приложение) с помощью Eclipse. Это бросает мне исключение, упомянутое в названии. Отладка Eclipse показывает мне следующий код:

/*
 * GOOGLE: Since we're bundling our own version of SWT, we need to be
 * able to tell SWT where its dynamic libraries live.  Otherwise we'd
 * have to force our users to always specify a -Djava.library.path
 * on the command line.
 */
String swtLibraryPath = System.getProperty ("swt.library.path");
try {
    String newName = name + "-" + platform + "-" + version; //$NON-NLS-1$ //$NON-NLS-2$
    if (swtLibraryPath != null)
        System.load(swtLibraryPath + System.mapLibraryName(newName));
    else
        System.loadLibrary (newName);
    return;
} catch (UnsatisfiedLinkError e1) {     
    try {
        String newName = name + "-" + platform; //$NON-NLS-1$
        if (swtLibraryPath != null)
            System.load(swtLibraryPath + System.mapLibraryName(newName));
        else
            System.loadLibrary (newName);
        return;
    } catch (UnsatisfiedLinkError e2) {
        throw e1;
    }
}

Исключением является e1. Я не внес никаких изменений в приложение, просто создал его и запустил отладку.

Чего мне не хватает? Я использую Ubuntu 9.04 64 бит (не знаю, имеет ли это значение)

РЕДАКТИРОВАТЬ: трассировка стека

    Exception in thread "main" java.lang.UnsatisfiedLinkError: /home/rafael/.eclipse/640022211/plugins/com.google.gwt.eclipse.sdkbundle.linux_1.7.0.v200907291526/gwt-linux-1.7.0/libswt-pi-gtk-3235.so: /home/rafael/.eclipse/640022211/plugins/com.google.gwt.eclipse.sdkbundle.linux_1.7.0.v200907291526/gwt-linux-1.7.0/libswt-pi-gtk-3235.so: wrong ELF class: ELFCLASS32 (Possible cause: architecture word width mismatch)
        at java.lang.ClassLoader$NativeLibrary.load(Native Method)
        at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1767)
        at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1663)
        at java.lang.Runtime.load0(Runtime.java:787)
        at java.lang.System.load(System.java:1022)
        at org.eclipse.swt.internal.Library.loadLibrary(Library.java:132)
        at org.eclipse.swt.internal.gtk.OS.(OS.java:22)
        at org.eclipse.swt.internal.Converter.wcsToMbcs(Converter.java:63)
        at org.eclipse.swt.internal.Converter.wcsToMbcs(Converter.java:54)
        at org.eclipse.swt.widgets.Display.(Display.java:126)
        at com.google.gwt.dev.SwtHostedModeBase.(SwtHostedModeBase.java:82)
    Could not find the main class: com.google.gwt.dev.HostedMode. Program will exit.

Ответы [ 2 ]

5 голосов
/ 31 августа 2009

Решил проблему. После более внимательного прочтения трассировки стека (спасибо Уоррену!) Я в конечном итоге погуглил по разным терминам и определил причину, по которой действительно возникает проблема ширины слова.

Решением было установить 32-разрядную JVM и указать Eclipse использовать ее вместо 64-разрядной. Это можно сделать, установив новую JVM, перейдя в «Окно»> «Установки»> «Java»> «Установленные JRE» в Eclipse и добавив новую JVM (не забудьте указать на jre dir). Затем я установил его по умолчанию и смог запустить пример.

1 голос
/ 29 августа 2009

Включение трассировки стека, по крайней мере, нескольких ее строк, действительно может помочь с этими, поскольку обычно это означает, что в вашей системе отсутствует системная библиотека какой-либо формы. Я думаю, что переменная 'newname' на самом деле перечислит отсутствующую библиотеку, если вы собираетесь использовать отладчик.

Я также запускаю Ubuntu 9.04, но не 64-битную, и когда я сталкиваюсь с ошибкой UnsatisfiedLink, это произошло из-за неправильной версии libstdc ++. Это исправило это для меня:

sudo apt-get install libstdc++5
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...