【问题标题】:Cannot load 32-bit SWT libraries on 64-bit JVM无法在 64 位 JVM 上加载 32 位 SWT 库
【发布时间】:2013-08-12 15:03:09
【问题描述】:

我的电脑是win7 64位,jdk是1.7.0.21,jvm是1.6..和64位 我想运行 SWT 应用程序并导出为可运行的 jar 文件。当我运行应用程序时,它有一个异常,即无法在 64 位 JVM 上加载 32 位 SWT 库,因此我将 SDK 作为备用 jre 导入,就像您指向 Cannot load 64-bit SWT libraries on 32-bit JVM ( replacing SWT file ) 一样,并在Eclipse,应用程序可以正常运行,但是当我编辑bat文件运行jar文件时,总是出现无法在64位JVM上加载32位SWT库的问题,我有64位的swt.jar,但我不知道如何替换,我想用 SDK 的信息编辑 bat 文件。如何处理问题?

【问题讨论】:

  • 请清理您的格式。
  • 32 位共享库只能由 32 位应用程序加载。这是操作系统的限制,您无法更改。如果您有 32 位 DLL,则只能在 32 位 JVM 中加载它,如果您有 64 位 DLL,则只能在 64 位 JVM 中加载。如果您使用 C 或 C++ 等,这将是相同的。这不是您可以简单解决的问题,即使在 Linux 和 Solaris 中,同样的限制也适用。
  • 不好意思,能不能说的详细点,因为我没有深入学习JVM或者swt机制

标签: java jvm swt libraries


【解决方案1】:

您有一个 64 位 JVM,因此它不会运行 32 位 SWT 库。您需要:

  1. 下载并安装 32 位 JVM 并更改项目设置以运行 32 位 JVM 而不是 64 位。
  2. 请下载并安装 64 位库。

上一个 SO 问题对第一个选项有很好的描述,并附有图表:

Cannot load 64-bit SWT libraries on 32-bit JVM ( replacing SWT file )

【讨论】:

  • 嗨,首先是应用程序在 Eclipse 环境中正确运行,因为我已经导入了备用 jre SDK(ibm.com..),但是当我导出项目并使用 bat 文件运行可运行文件时jar文件,报错,不知道怎么把sdk信息导出成bat文件,就是运行bat文件的时候,不是eclipse来的,所以解决方法好像不太合适
  • 最简单的解决方案是使用 64 位库(否则使用 64 位 JVM 毫无意义)。你能做到吗?
  • 很抱歉,我不知道如何用 64 位 swt.jar 替换 32 位 swt.jar
  • @sophia2046234:你需要下载它们。谷歌下载链接。
  • 您应该可以通过谷歌搜索逐步说明。先让它在 Eclipse 上运行,然后在 bat 文件上运行
【解决方案2】:

64 位 JVM ? 你应该使用 64 位 swt

【讨论】:

  • 嗨,是的,我知道我应该改用 64 位,但关键是我不知道怎么做,你能详细教我一下吗
【解决方案3】:

除了与操作系统相对应的适当 swt 库及其位数外,有时还要考虑以下几点:

我的环境:

32 位 Ubuntu

32 位 JVM/JRE

Eclipse 使用 32 位 JRE 运行

32 位 Gtk SWT

方法一: 当我用 64 位 swt 替换 32 位 swt 以在其他平台上进行测试时,我遇到了这个问题。为了解决这个问题,我必须删除/清理项目并使用 64 位 swt 重建项目。但这一步在逻辑上没有意义,仍然有效。

方法 2: 每个操作系统的所有 swt 库都具有相同的名称——“swt.jar”位于不同的文件夹中。我只是在测试的时候改成了合适的lib,即32位和64位的o/s都有swt.jar。现在这以某种方式引起了一些问题。还不能辨认。但是在将每个 swt lib 文件的名称更改为不同的名称时,它得到了解决。这一步也没有多大意义。

方法 3: 我正在使用 geotools api 10.5 版,它还包含 bin 文件夹中的 swt 库。我不得不从文件夹中删除它(移动到备用位置),现在我的应用程序运行顺利!!

【讨论】:

    【解决方案4】:

    我遇到了类似的问题。在我的 64 位机器上安装 32 位 jvm 解决了这个问题。

    【讨论】:

      【解决方案5】:

      我使用 SWT 的难点在于发行版。每个 SO(Linux、Windows | 32、64)都需要安装,Swing 没有这个问题而且很酷,但我更喜欢 SWT/JFace。

      为了解决这个问题,我创建了一个 Ant 脚本,用它正确的 swt jar 压缩每个安装。

      我得到了特定的 swt 罐子:

      http://archive.eclipse.org/eclipse/downloads/drops/R-3.6.1-201009090800/index.php#SWT

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-05-23
        • 1970-01-01
        • 2023-04-08
        • 1970-01-01
        相关资源
        最近更新 更多