Неудовлетворенная ошибка связи и отсутствие файлов .so при запуске Eclipse

19

Вчера я обновился до бета-версии 12.04. Теперь, когда я пытаюсь запустить Eclipse, я получаю заставку, а затем это сообщение об ошибке:

An error has occurred. See the log file /home/gabriel/.eclipse/org.eclipse.platform_3.7.0_155965261/configuration/1335382319394.log .

В файле журнала говорится примерно так:

java.lang.UnsatisfiedLinkError: Could not load SWT library. Reasons: 
    no swt-gtk-3740 in java.library.path
    no swt-gtk in java.library.path
    Can't load library: /home/gabriel/.swt/lib/linux/x86_64/libswt-gtk-3740.so
    Can't load library: /home/gabriel/.swt/lib/linux/x86_64/libswt-gtk.so

, а затем еще много сообщений об ошибках.

Каталог /home/gabriel/.swt/lib/linux/x86_64/ существует, но пуст. Я также попытался переустановить eclipse без успеха.

Любые идеи?

    
задан Keidax 25.04.2012 в 19:41
источник

6 ответов

19

У меня такая же проблема на машине AMD64 (Ubuntu 12.04). и решил его обходным путем:

копировать: файлы, содержащие «3740» в /usr/lib/jni/libswt-*3740.so , чтобы ~ / .swt / lib / linux / x86_64 /

Но, конечно, пакеты: libswt-gtk-3-java & amp; libswt-gtk-3-jni .

sudo apt-get install libswt-gtk-3-jni libswt-gtk-3-java

и

sudo cp /usr/lib/jni/libswt-*3740.so ~/.swt/lib/linux/x86_64/

, если у вас есть 32-битная система:    sudo cp /usr/lib/jni/libswt-*3740.so ~/.swt/lib/linux/x86 /

    
ответ дан Hanynowsky 30.04.2012 в 05:11
источник
4

Попробуйте запустить

sudo update-alternatives --config java

и выбор open jdk . Возможно, это сработает.

    
ответ дан Lelouch Lamperouge 25.04.2012 в 19:51
2

И для меня это работает; Я сделал:

cd ~/.swt/lib/linux/x86_64
ln -s /usr/lib/jni/libswt-atk-gtk-3740.so
ln -s /usr/lib/jni/libswt-gtk-3740.so
ln-s /usr/lib/jni/libswt-pi-gtk-3740.so

, и поэтому я создал 3 символьные ссылки в папке ~ / .swt / lib / linux / x86_64

Теперь Eclipse отлично работает!

    
ответ дан Luca122131 10.05.2012 в 16:10
2
echo "-Djava.library.path=/usr/lib/jni" >> /etc/eclipse.ini

исправил это для меня.

    
ответ дан Dale E. Moore 25.07.2012 в 11:05
1

Спасибо за отличные инструкции. Вместо этого я добавил символические ссылки, чтобы убедиться, что он забирает все 3740 :

cd ~/.swt/lib/linux/x86_64

for i in /usr/lib/jni/*3740*.so ; do ln -s $i; done
    
ответ дан henry 28.05.2012 в 20:32
0

Я сделал символические ссылки на недостающие библиотеки, и все сработало нормально. В итоге это выглядело так ...

    libswt-atk-gtk-3740.so -> /usr/lib/jni/libswt-atk-gtk-3740.so
    libswt-gtk-3740.so -> /usr/lib/jni/libswt-gtk-3740.so
    libswt-pi-gtk-3740.so -> /usr/lib/jni/libswt-pi-gtk-3740.so

Кажется, работает.

    
ответ дан noel 10.05.2012 в 07:36