我的电脑是win7 64位,jdk是1.7.0.21,jvm是1.6..和64位我想运行SWT应用程序并导出为可运行的jar文件。当我运行该应用程序时,它有一个例外,即无法在 64 位 JVM 上加载 32 位 SWT 库,因此我将 SDK 作为备用 jre 导入,就像您指出的 无法在 32 位 JVM 上加载 64 位 SWT 库一样(替换 SWT 文件),在 Eclipse 中,应用程序可以正常运行,但是当我编辑 bat 文件以运行 jar 文件时,它总是出现无法在 64 位 JVM 上加载 32 位 SWT 库之类的问题,我有swt.jar 用于 64 位,但我不知道如何替换,我想用 SDK 的信息编辑 bat 文件。如何处理问题?
5 回答
您有一个 64 位 JVM,因此它不会运行 32 位 SWT 库。您需要:
- 下载并安装 32 位 JVM 并更改项目设置以运行 32 位 JVM 而不是 64 位。
- 请下载并安装 64 位库。
这个先前的SO问题对第一个选项有很好的描述,并附有图表:
64位JVM?您应该使用 64 位 swt
除了与操作系统及其位数相对应的适当 swt 库外,有时还要考虑以下几点:
我的环境:
32 位 Ubuntu
32 位 JVM/JRE
使用 32 位 JRE 运行的 Eclipse
32 位 Gtk SWT
方法 1:当我用 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 库。我不得不从文件夹中删除它(移动到备用位置),现在我的应用程序运行顺利!!
我有一个类似的问题。在我的 64 位机器上安装 32 位 jvm 解决了这个问题。
我很难使用 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