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

2022-09-02 09:18:10

我正在尝试在 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

任何想法这里还需要做些什么?


答案 1

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

在 Ubuntu 上,您必须安装软件包 ,其中包含适用于 64 位 Ubuntu 的 32 位兼容性库。ia32-libs

更新:Ubuntu 13.10 引入了多架构,取而代之的是 .资料来源:https://stackoverflow.com/a/10473415/14731ia32-libslibstdc++6:i386 libgcc1:i386 zlib1g:i386 libncurses5:i386


答案 2

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

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

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

这吸引了大量的i386库。如果您愿意,可以再次卸载OpenJDK,但我将其保留在原位,以免意外自动删除库。

将Oracle JDK放在PATH上,现在Eclipse和NetBeans将启动良好。


推荐