java.lang.UnsatisfiedLinkError : Cannot load 32-bit SWT libraries on 64-bit JVM in windows

标签 java swt install4j unsatisfiedlinkerror

我正在开发一个 Windows 应用程序。

我需要为此创建一个安装程序(32 位和 64 位 Windows 操作系统的通用安装程序),为此我使用 Install4J 软件。

我在Windows 32位上开发,jdk 1.7。

安装程序在 32 位 Windows 操作系统中工作正常,但是当我尝试在 win 64 位操作系统中创建安装程序时,它会抛出类似 java.lang.UnsatisfiedLinkError: Cannot load 32-bit SWT Libraries on 64-bit JVM 的错误

请帮忙解决这个问题..

enter image description here

最佳答案

问题在于 32 位和 64 位 Windows JVM 有单独的“swt.jar”文件,并且它们不可互换。您不能在 64 位 Windows JVM 上使用 32 位 Windows JAR……反之亦然。 (AFAIK,根本障碍在于 Windows 和 JVM,而不是 SWT。)

一种可能性是执行一些类加载器技巧,并根据应用程序在运行时检测到的平台在不同的 JAR 之间动态选择。安装程序需要合并两种风格的 SWT JAR ...并具有不同的名称。

这个答案更详细:Supporting SWT on Windows/Mac & 32bit/64bit

关于java.lang.UnsatisfiedLinkError : Cannot load 32-bit SWT libraries on 64-bit JVM in windows,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22192939/

相关文章:

所有列的 SWT 表复选框

docker - 使用 install4j 和 gradle 在 docker 容器中构建 windows 安装程序

java - Postgres DB 无法使用 RJDBC 连接到 R

Java Swing - 如何在任何 JOptionPane 之前发出蜂鸣声?

java - Java 中 toCharArray() 和 toString() 的运行时间是多少?

java - Runnable Jar 找不到资源和其他库

java - 在 Java SWT 浏览器中更改 URL(来自其他线程?)

java - 如何更改安装目录选择器附加信息的字体颜色和规范

launcher - install4j 条件如何检查启动器是 UI 还是控制台应用程序启动器?

java - 为什么 POJO 需要序列化/反序列化为通常包含在 'entities' 包中的 JSON? 'entities'是什么意思?