Java 32-bit VS 64-bit

本文介绍了在安装64位JDK过程中遇到的错误,并详细记录了解决过程,包括清理无效注册表项和调整环境变量配置。此外,还提供了运行Eclipse时遇到的问题及解决方案。

因为系统是64位的, 所以下载软件时就默认下载了64bit的软件. 今天下载了一个64位的eclipse, 却报错, 后知道需要安装64位的JDK

在oracle的官网下载了个 jdk-6u37-windows-x64.exe, 安装后, 当在cmd命令行中运行 > java命令时, 却报出了以下错误:

Error opening registry key'software\Javasoft\Java Runtime Environment'
Error: could not find java.dll
Error: could not find Java 2 Runtime Environment'

尝试了重装, 下载revouninstaller-portable软件彻底卸载JDK, 清理注册表, 甚至重启电脑, 但是还是没用! 网上有提到环境变量的配置, 因为我是重新安装, 路径, 目录名等都一样, 所以我之前就没有修改这些配置, 但当我检查后发现, 在我看了一下我的环境变量, 发现在CLASSPATH这个变量值中, 多了好多tmp路径!!!

.;C:\Users\userName\AppData\Local\Temp\LRE841.tmp\lib\tools.jar;C:\Users\userName\AppData\Local\Temp\LRE841.tmp\lib;C:\Users\userName\AppData\Local\Temp\LRE841.tmp\lib\*.jar;C:\Users\userName\AppData\Local\Temp\LRE841.tmp\jre\lib\*.jar;

当我试着打开这些路径时, 发现路径根本不存在! 我删除了这些无效的配置, 重新运行了一个cmd窗口, 问题解决了!


运行eclipse时, 报: Error: could not find Java SE Runtime Environment


解决方案:

修改eclipse目录中的eclipse.ini文件, 在任意位置添加以下vm的配置, 保存即可

-vm
C:\Java\jdk1.6.0_37_x64\jre\bin\javaw.exe

<think> 我们正在解决一个Java运行时错误:java.lang.UnsatisfiedLinkError: Cannot load 32-bit SWT libraries on 64-bit JVM(或类似描述)。根据引用[1]、[2]、[3]、[5],这个错误通常是由于SWT库与JVM(Java虚拟机)的位数不匹配造成的。具体来说,就是32位的SWT库无法在64位的JVM上运行,反之亦然。 解决方案的核心是确保SWT库的位数与JVM的位数一致。我们可以通过以下步骤来解决: 1. 确定当前JVM的位数。 可以通过运行以下Java代码来检查: ```java public class JVMBit { public static void main(String[] args) { String arch = System.getProperty("sun.arch.data.model"); System.out.println("JVM Bit: " + arch); } } ``` 或者在命令行中运行: ``` java -version ``` 在输出中,如果看到“64-Bit”字样,则是64位JVM;如果看到“32-Bit”则是32位。 2. 根据JVM的位数下载对应的SWT库。 引用[1]提供了32位和64位的SWT库下载链接(百度网盘)。但请注意,这些链接可能不是官方来源,建议从Eclipse官网下载以确保安全性和兼容性。 官方下载地址:https://www.eclipse.org/swt/ 3. 将正确的SWT库(JAR文件)添加到项目的类路径中,并确保它被正确加载。 如果是在Eclipse项目中,可以右键项目 -> Build Path -> Configure Build Path -> Libraries -> 添加外部JARs(选择下载的SWT库)。 4. 如果是在运行配置中,需要指定与SWT库位数匹配的JRE。 引用[5]提到:在运行配置(Run Configurations)的Main选项卡中,Java Runtime Environment一栏,选择execution environment或者Runtime JRE为对应位数的JRE32位SWT则选择32JRE64位SWT则选择64JRE)。 5. 如果问题仍然存在,检查是否因为多个SWT库冲突(比如项目依赖了不同版本的SWT)或者环境变量(如`java.library.path`)指向了错误的位置。 6. 在某些情况下,可能需要设置`-Djava.library.path`参数来指定SWT本地库(.dll或.so)的路径。例如: ``` java -Djava.library.path=/path/to/swt/libs -jar your_application.jar ``` 7. 如果使用的是IDE(如IntelliJ IDEA或Eclipse),确保IDE本身使用的JVM位数与项目配置的JVM位数一致。例如,如果IDE是64位的,但项目配置为使用32JRE,那么需要调整项目配置或IDE的JVM设置。 8. 对于Linux系统,引用[4]提到可能还需要考虑GTK版本与SWT的兼容性,但该引用中最后发现与问题无关。不过,如果上述步骤无效,也可以检查一下系统是否安装了必要的依赖(如GTK)。 总结:主要解决方向是统一JVM和SWT库的位数(32位或64位)。 下面生成相关问题: </think>### 解决 Java 中 `java.lang.UnsatisfiedLinkError: Cannot load 32-bit SWT libraries` 错误的方法 #### 错误原因分析 该错误的核心是 **SWT 本地库位数与 JVM 位数不匹配**: - 当使用 **32 位 SWT 库** 搭配 **64 位 JVM** 时,会报错 `Cannot load 32-bit SWT libraries on 64-bit JVM` - 当使用 **64 位 SWT 库** 搭配 **32 位 JVM** 时,会报错 `Cannot load 64-bit SWT libraries on 32-bit JVM`[^1][^3] #### 解决方案 ##### 方法 1:统一 JVM 和 SWT 库的位数(推荐) 1. **检查当前 JVM 位数**: ```bash java -version ``` - 输出含 `64-Bit` 则为 64 位 JVM,否则为 32 位 2. **匹配 SWT 库**: - 若 JVM 是 **32 位** → 使用 **32 位 SWT 库** - 若 JVM 是 **64 位** → 使用 **64 位 SWT 库** - 官方 SWT 库下载:[Eclipse SWT 官网](https://www.eclipse.org/swt/) ##### 方法 2:修改运行时 JVM 配置(IDE 环境) 1. 在 **Eclipse/IntelliJ IDEA** 中: - 打开 `Run Configurations` - 在 `JRE` 或 `Java Runtime Environment` 选项中选择匹配 SWT 库位数的 JVM[^5] ![](https://example.com/run-config.png) *图:修改运行时 JVM 设置* ##### 方法 3:显式指定库路径 通过 `-Djava.library.path` 参数直接指定 SWT 本地库路径: ```bash # 示例(Linux/Mac) java -Djava.library.path=/path/to/swt/libs -jar your_app.jar # 示例(Windows) java -Djava.library.path=C:\swt\libs -jar your_app.jar ``` ##### 方法 4:检查依赖冲突 1. 使用 Maven/Gradle 清理依赖: ```xml <!-- Maven 排除冲突的 SWT 依赖 --> <dependency> <groupId>org.eclipse.swt</groupId> <artifactId>org.eclipse.swt.gtk.linux.x86_64</artifactId> <!-- 按系统选择 --> <version>4.25</version> </dependency> ``` #### 验证步骤 1. 下载匹配的 SWT 库([32 位](https://pan.baidu.com/s/192EABtRI0sTTMq3-QYHhZQ) | [64 位](https://pan.baidu.com/s/1oZDlPOgCih_o0eVqzyCBeQ))[^1] 2. 将 SWT JAR 添加到项目依赖 3. 确保 `swt.jar` 中的 `.dll/.so` 文件与 JVM 位数一致 4. 重新启动应用 > **关键点**:SWT 库的本地文件(如 `swt-win32-xxxx.dll` 或 `libswt-gtk-xxxx.so`)必须与 JVM 位数完全匹配[^2][^4]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值