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

Jan*_*rts 17 java 64-bit jvm

我正在尝试在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
Run Code Online (Sandbox Code Playgroud)

将其添加到库路径: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
Run Code Online (Sandbox Code Playgroud)

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

Jes*_*per 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


cay*_*ann 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
Run Code Online (Sandbox Code Playgroud)

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

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


小智 6

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