【发布时间】:2012-03-12 17:08:45
【问题描述】:
我正在尝试在 64 位 Debian Mint 机器上运行 32 位 Hotspot JVM。乍一看,一切正常,直到您尝试使用 Swing 运行某些东西:
java.lang.UnsatisfiedLinkError: /opt/javadev/jdk1.7.0_03_32b/jre/lib/i386/xawt/libmawt.so:
libXext.so.6: cannot open shared object file: No such file or directory
将其添加到库路径:export LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu。
然后它给出了这个错误:
java.lang.UnsatisfiedLinkError: /opt/javadev/jdk1.7.0_03_32b/jre/lib/i386/xawt/libmawt.so:
libXext.so.6: wrong ELF class: ELFCLASS64
知道这里还需要做什么吗?
【问题讨论】:
-
32 位进程无法加载 64 位库。您需要安装 32 位兼容性库。在 Ubuntu 上,您需要安装包
ia32-libs。不知道 Debian 上的等价物是什么。 -
为什么你又要在 64 位机器上运行 32 位 JVM?
-
@Jesper 做到了!如果您愿意,请将其归档为答案。非常感谢! :-D
-
@Marcelo 主要是出于性能原因。在我的例子中,使用一个非常大的 C++ 项目运行 Netbeans。与 64 位相比,32 位 JVM 的性能更好,因为引用的大小只有一半。允许将更多内容放入缓存中。从而获得更高的性能。 (这就是我至少读到的)在我的情况下,当 Netbeans 初始化项目时,我创建了 LOADS 对象。就我而言,它可以减少内存占用。
-
@Marcelo -- 与 64 位相比,32 位 JVM 通常在更小的堆中运行(因此更快)。折衷方案是 IBM J9 JVM,它具有“32/64 位模式”,允许堆接近 68G,同时仅使用 32 位指针。