【问题标题】:no swt-mozilla-gtk-4332 in java.library.pathjava.library.path 中没有 swt-mozilla-gtk-4332
【发布时间】:2014-11-12 02:41:45
【问题描述】:

(有关新信息,请参阅底部的更新。)

我有一个包含集成浏览器的 Java SWT 应用程序。

在 Windows 和 CENTOS 6.5 上一切正常。我被要求让应用程序在我安装了 CENTOS 7 的新计算机上运行。

我不断收到 no swt-mozilla-gtk-4332 in java.library.path 错误消息。

我知道有关此问题的各个页面。例如:

StackOverflow 1016569365185687130980

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现在在Luna,所以可能会解决问题,必须检查。这通常意味着更新的 SWT 库。我真的认为 Java 是独立于版本的,但我猜不完全是。

【问题讨论】:

  • 你真的下载了 Linux 版本的 SWT 吗?每个平台都有不同的 SWT 版本。
  • 不仅每个操作系统都有不同的 SWT 构建,而且每个架构也有不同的构建(X86 和 X64)。我使用的 jar 文件包括所有 SWT 变体,我在运行时加载了相应的变体。这部分工作完美无缺,即使在 Linux 上也是如此。无论出于何种原因,这里的问题都是 GTK+。我没有包含该组件,因此生成路径警告,因为 Firefox 随操作系统一起提供。我安装了必要的组件。据我所知,它就在那里,只是没有使用它。
  • 如果 SWT 版本不兼容或问题,错误信息将完全不同。我知道。我已经去过那里并做到了。
  • 关键,就像问题6418568一样,是不满意的链接错误。回答这个问题的人说,这种情况下的问题可能是不受支持的 XulRunner。我确实升级到 CENTOS 7,所以可能我拥有的版本太新,但很难检查。我不想降级,因为我在 7,而不是 6.5,如果这甚至是问题,这可能会导致其他问题。
  • @SarahWeinberger 不确定您使用的是哪个 SWT 版本,但可能值得尝试使用 latest one(如果您还没有的话)。

标签: java linux centos swt


【解决方案1】:

我刚刚在 Ubuntu 14.04 上遇到了同样的错误,并通过安装旧版本解决了它:

sudo apt-get install libwebkitgtk-1.0-0

libwebkitgtk-3.0-0 已安装

【讨论】:

    【解决方案2】:

    对于 Linux Mint 19,它适用于此(与 marengaz 的回答相同)

    sudo apt-get install libwebkitgtk-1.0-0
    

    【讨论】:

    • 这是旧包。
    【解决方案3】:

    我使用的是 SWT/GTK+ v4.3,需要下载并更新到 SWT/GTK+ v4.4(或 v4.5 的测试版),它支持 GTK 版本 v22.* 中引入的新 GTK+,并出现在CENTOS 7. 查看 Baz 和我自己的评论。

    【讨论】:

    • 如何安装新的 SWT 版本?我想我必须将路径添加到 Eclipse 的 CLASSPATH,但我找不到方法。
    【解决方案4】:

    我尝试了类似的东西

    sudo yum 安装 libwebkitgtk-1.0-0

    在 Fedora 28 上,我收到了这条消息

    " 上次元数据过期检查:0:33:01 前 2019 年 1 月 2 日星期三 06:38:13 PM -02。 参数不匹配:libwebkitgtk-1.0-0 错误:找不到匹配项 "

    在这篇文章中阅读

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

    fedora 上不支持 libwebkitgtk 版本 1

    【讨论】:

    • 它叫 webkit2gtk3
    【解决方案5】:

    sudo apt-get install libwebkitgtk-1.0-0

    我测试了很多java版本,以为是java。但真正有意义的是为 pentaho 数据集成的 7.1 和 8.0 版本安装 libwebkitgtk。

    【讨论】:

      【解决方案6】:

      正如大家所说,您必须安装 libwebkitgtk。但是现在在 linux mint 和 ubuntu 的更新版本中它没有被安装。解决这个问题见:How to install the libwebkitgtk package on 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 -> 如果你使用的是 64 位的 Vega 和 jdk

      sudo apt-get install libwebkitgtk-1.0-0:i386 -> 如果你使用的是 32 位的 Vega 和 jdk

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-07-29
        • 2014-10-07
        • 2016-09-04
        • 2011-07-02
        • 2010-10-29
        • 2015-02-11
        • 1970-01-01
        相关资源
        最近更新 更多