如何在64位Linux上运行32位JVM?

时间:2012-02-22 11:12:00

标签: java jvm 64-bit

我正在尝试在64位Debian Mint机器上运行32位热点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

知道还有什么必须在这里完成吗?

4 个答案:

答案 0 :(得分:15)

为了能够使用32位JVM,您需要安装32位兼容库。第二条错误消息表示32位JVM进程正在尝试加载64位库;这不起作用。

在Ubuntu上,你必须安装包ia32-libs,它包含64位Ubuntu的32位兼容库。

更新:Ubuntu 13.10引入了多拱,将ia32-libs替换为libstdc++6:i386 libgcc1:i386 zlib1g:i386 libncurses5:i386。资料来源:https://stackoverflow.com/a/10473415/14731

答案 1 :(得分:12)

我在Ubuntu 14.04上遇到了同样的问题,我希望将我的32位Oracle Java保留在64位安装上。自Ubuntu 13.10以来,ia32-libs已经消失,现在glib的答案是“只需下载你需要的i386库”。不幸的是,似乎没有一种简单的方法可以找出那些库。

简单的补救措施是将32位OpenJDK安装为

sudo apt-get install openjdk-7-jdk:i386

这吸引了大量的i386库。如果你愿意,你可以再次卸载OpenJDK,但我把它留在原地,所以我不小心自动移动库。

将Oracle JDK放在PATH上,现在Eclipse和NetBeans将正常启动。

答案 2 :(得分:6)

我遇到类似CentOS 6.4的问题,解决方案是安装ia32-libs等价物(以root身份):     yum install glibc.i686 libXext.i686 libXtst.i686

答案 3 :(得分:3)

如果要使用32位引用,请使用64位JVM。默认情况下,它使用来自Java 6更新23的最多32 GB内存(通常超过32位程序)的32位引用。

http://docs.oracle.com/javase/7/docs/technotes/guides/vm/performance-enhancements-7.html

@Hot Licks表示IBM JVM可以使用“32/64位模式”访问高达68 GB的文件

如果你需要使用超过这个数量(或者确实喜欢它),我会使用堆内存。这样可以控制完整的GC时间,这意味着您可以始终使用32位引用。