няма 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, 7130980

Jazz.net, Eclipse.org

Използвам Firefox 24.8.0. Това дойде с CENTOS 7. Току-що актуализирах и целия софтуер.

Препратките показват, че трябва да имам OpenJDK, което правя. Това е единствената версия, която може да изпълнява Java.

Инсталирах по друга препоръка xulrunner (yum инсталирайте 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 е на Luna сега, така че това може да реши проблема, трябва да проверя. Това обикновено означава актуализирана SWT библиотека. Наистина мислех, че Java е независима от версията, но предполагам, че не е напълно.


person Sarah Weinberger    schedule 17.09.2014    source източник
comment
Всъщност изтеглихте ли Linux версията на SWT? Има различни версии на 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 работи с това (същото като отговора на marengaz)

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. Вижте коментар от Baz и мен.

person Sarah Weinberger    schedule 20.09.2014
comment
Как се инсталира новата версия на SWT? Предполагам, че ще трябва да добавя пътя към CLASSPATH на eclipse, но не мога да намеря пътя. - 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