нет swt-mozilla-gtk-4332 в java.library.path

(См. обновление внизу для получения новой информации.)

У меня есть приложение Java SWT со встроенным браузером.

Все отлично работает на Windows и на CENTOS 6.5. Меня попросили заставить приложение работать на новом компьютере, на который я установил CENTOS 7.

Я продолжаю получать сообщение об ошибке no swt-mozilla-gtk-4332 в java.library.path.

Я знаю о различных страницах, которые говорят по этому вопросу. Например:

StackOverflow 10165693, 6518568, < href="https://stackoverflow.com/questions/7130980">7130980

Jazz.net, Eclipse.org

Я использую Firefox 24.8.0. Это пришло с CENTOS 7. Я только что обновил все программное обеспечение.

В ссылках указано, что у меня должен быть OpenJDK, что я и делаю. Это единственная версия, которая может выполнять Java.

Я установил xulrunner по другой рекомендации (yum install xulrunner).

Я установил: MOZILLA_FIVE_HOME=/usr/lib/mozilla (некоторые говорят использовать то, что другие говорят не делать. Я пробовал оба. Кроме того, одна проблема указывает на то, что «/usr/lib64/xulrunner» меньше двойных кавычек, но это не сработало.Да, эта папка существует.)

587 человек положительно оценили решение Ubuntu:

ln -s /usr/lib/jni/libswt-* ~/.swt/lib/linux/x86_64/

Папки jni нет, и никак этот вариант не работал.

Как я уже упоминал, есть только одна программа, поэтому

sudo update-alternatives --config java

было бесполезно.

В чем может быть проблема и как ее решить? Поскольку машина CENTOS 6.5 работает (может быть, из-за отсутствующего пакета программ?), а 7 - нет, не может быть, чтобы мне просто нужно было что-то добавить в мой jar-файл, как это работало раньше.

Примечание: вот содержимое моего файла /etc/profile.d/java.sh:

export MOZILLA_FIVE_HOME=/usr/lib/mozilla
export LD_LIBRARY_PATH=${MOZILLA_FIVE_HOME}:${LD_LIBRARY_PATH}

Вот фактический вывод ошибки.

Exception in thread "main" java.lang.reflect.InvocationTargetException
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader.main(JarRsrcLoader.java:58)
Caused by: org.eclipse.swt.SWTError: No more handles [MOZILLA_FIVE_HOME='/usr/lib/mozilla'] (java.lang.UnsatisfiedLinkError: Could not load SWT library. Reasons: 
    no swt-mozilla-gtk-4332 in java.library.path
    no swt-mozilla-gtk in java.library.path
    /home/hts/.swt/lib/linux/x86_64/libswt-mozilla-gtk-4332.so: libxpcom.so: cannot open shared object file: No such file or directory
    Can't load library: /home/hts/.swt/lib/linux/x86_64/libswt-mozilla-gtk.so
)
    at org.eclipse.swt.SWT.error(Unknown Source)
    at org.eclipse.swt.browser.Mozilla.initMozilla(Unknown Source)
    at org.eclipse.swt.browser.Mozilla.create(Unknown Source)
    at org.eclipse.swt.browser.Browser.<init>(Unknown Source)
    at prjNetAccelerator.AppMain.createContents(Unknown Source)
    at prjNetAccelerator.AppMain.open(Unknown Source)
    at prjNetAccelerator.AppWrapper.doLaunch(Unknown Source)
    at prjNetAccelerator.AppWrapper.main(Unknown Source)
    ... 5 more
Caused by: java.lang.UnsatisfiedLinkError: Could not load SWT library. Reasons: 
    no swt-mozilla-gtk-4332 in java.library.path
    no swt-mozilla-gtk in java.library.path
    /home/hts/.swt/lib/linux/x86_64/libswt-mozilla-gtk-4332.so: libxpcom.so: cannot open shared object file: No such file or directory
    Can't load library: /home/hts/.swt/lib/linux/x86_64/libswt-mozilla-gtk.so

    at org.eclipse.swt.internal.Library.loadLibrary(Unknown Source)
    at org.eclipse.swt.internal.Library.loadLibrary(Unknown Source)
    ... 12 more

Обновить

Текст ошибки указывал на проблему, а именно на то, что системе не удалось найти libxpcom.so. Mozilla (xulruntime) в версии 22.0 заменила файлы libxpcom.so и mozsqlite3.so на libxul.so. Файл libsmozsqlite3.so просуществовал еще несколько версий, после чего также исчез. Все остальные файлы аналогичны версии 28.x, которая является текущей версией на сегодняшний день (2014.09.18).

Встроенный браузер SWT почему-то хочет старую версию, хотя ее там нет. Вопросы:

  • Каков механизм, с помощью которого SWT определяет, какую версию Gecko GTK+/xulrunner использовать?
  • Решит ли проблему более новая версия SWT, хотя я думал, что моя версия с Eclipse Kepler актуальна?
  • Как заставить SWT ориентироваться на новую версию?
  • Является ли проблема Firefox или Chrome или что-то связанное?

Теперь я понимаю большую часть проблемы, но не всю.

Я вижу, что Eclipse сейчас на Луне, так что это может решить проблему, нужно проверить. Обычно это означает обновленную библиотеку SWT. Я действительно думал, что Java не зависит от версии, но я думаю, что не совсем.


person Sarah Weinberger    schedule 17.09.2014    source источник
comment
Вы действительно загрузили версию SWT для Linux? Для каждой платформы существуют разные сборки SWT.   -  person greg-449    schedule 18.09.2014
comment
Существуют не только разные сборки SWT для каждой ОС, но и для каждой архитектуры (X86 и X64). Файл jar, который я использую, включает все варианты SWT, и я загружаю соответствующий во время выполнения. Эта часть работает безупречно даже в Linux. Проблема здесь в GTK+ по какой-то причине. Я не включил этот компонент, поэтому предупреждение о пути сборки, поскольку Firefox поставляется с ОС. Я установил необходимые компоненты. Насколько мне известно, он там есть, просто не использую его.   -  person Sarah Weinberger    schedule 18.09.2014
comment
Если бы версия SWT была несовместима или возникла проблема, сообщение об ошибке было бы совершенно другим. Я знаю. Я уже был там и сделал это.   -  person Sarah Weinberger    schedule 18.09.2014
comment
Ключ, как и в вопросе 6418568, — это ошибка неудовлетворенной ссылки. Ответивший человек сказал, что проблема в этом случае может заключаться в неподдерживаемом XulRunner. Я обновился до CENTOS 7, поэтому, возможно, у меня слишком новая версия, но ее трудно проверить. Я не хочу переходить на более раннюю версию, так как у меня 7, а не 6.5, и это может вызвать другие проблемы, если это вообще проблема.   -  person Sarah Weinberger    schedule 18.09.2014
comment
@SarahWeinberger Не уверен, какую версию SWT вы используете, но, возможно, стоит попробовать использовать последний (если вы еще этого не сделали).   -  person Baz    schedule 19.09.2014
comment
Это был ответ. Ура! У меня был SWT v4.3, и я обновился до SWT v4.4, и это помогло. Когда я зашел на eclipse.org/SWT, я сказал, что там написано SWT/GTK+. SWT поставляется интегрированным с GTK, как я и думал, и у вас должен быть соответствующий компонент в Linux. Спасибо Баз, вы должны поставить свой комментарий в качестве ответа, тогда вы можете получить несколько баллов. :)   -  person Sarah Weinberger    schedule 19.09.2014
comment
@SarahWeinberger Если вы добавите @Baz к своему комментарию, я получу уведомление, иначе я не узнаю, что вы разместили ответ на мой комментарий.   -  person Baz    schedule 22.09.2014
comment
@Baz, извини за это. Я думал, что как только вы опубликуете комментарий, все участники получат уведомление.   -  person Sarah Weinberger    schedule 22.09.2014
comment
@SarahWeinberger Я думаю, что если есть только один человек (кроме вас), который разместил комментарий, то он работает без @, в противном случае, я думаю, вам нужно указать получателя.   -  person Baz    schedule 22.09.2014


Ответы (6)


у меня была такая же ошибка в Ubuntu 14.04, и я решил ее, установив более старую версию:

sudo apt-get install libwebkitgtk-1.0-0

libwebkitgtk-3.0-0 уже был установлен

person marengaz    schedule 20.05.2015

Для Linux Mint 19 это сработало (так же, как ответ Маренгаза)

sudo apt-get install libwebkitgtk-1.0-0
person Reitenator    schedule 03.10.2018

Я использовал SWT/GTK+ v4.3, и мне нужно было загрузить и обновить до SWT/GTK+ v4.4 (или бета-версии v4.5), которая поддерживает новый GTK+, представленный в версии GTK v22.* и представленный в CENTOS 7. См. комментарий от База и меня.

person Sarah Weinberger    schedule 20.09.2014
comment
Как установить новую версию SWT? Думаю, мне придется добавить путь к CLASSPATH затмения, но я не могу найти путь. - person José Tomás Tocino; 19.01.2021

Я пробовал что-то вроде

sudo yum установить libwebkitgtk-1.0-0

на Fedora 28, и я получил это сообщение

" Последняя проверка срока действия метаданных: 0:33:01 назад, среда, 02 января 2019 г., 18:38:13 -02. Нет совпадений для аргумента: libwebkitgtk-1.0-0 Ошибка: невозможно найти совпадение "

Как читается в этом посте

https://community.hitachivantara.com/thread/13998-problems-with-libwebkitgtk-10-0

Нет поддержки версии 1 libwebkitgtk в Fedora.

person Vanderci Curvelo Junior    schedule 02.01.2019
comment
он называется webkit2gtk3 - person kofemann; 22.04.2020

sudo apt-get установить libwebkitgtk-1.0-0

Я тестировал много версий java, думаю, что это была java. Но что действительно имеет смысл, так это установить libwebkitgtk для версий 7.1 и 8.0 интеграции данных Pentaho.

person WMS    schedule 01.06.2018

Вам придется установить libwebkitgtk, как все говорили. Но теперь в обновленной версии linux mint и ubuntu не устанавливается. Чтобы решить эту проблему, см.: Как установить libwebkitgtk в Ubuntu 20.04 LTS?

Следуя приведенным здесь шагам, проблема была устранена для меня:

  1. Откройте терминал и напишите это:

sudo nano /etc/apt/sources.list

  1. Добавьте эту запись в файл и сохраните:

    deb http://cz.archive.ubuntu.com/ubuntu bionic main universe

  2. sudo apt-get update

  3. sudo apt-get install libwebkitgtk-1.0-0 -› если вы используете Vega и JDK 64 бит

sudo apt-get install libwebkitgtk-1.0-0:i386 -› если вы используете Vega и jdk 32 бита

person Zubayer    schedule 21.02.2021