末日审判

末日审判

对于正常开发,我使用通过包管理器安装 Java 开发工具包(OpenJDK)时附带的 64 位 VM。

但是有些 Java 应用程序(我认为包含本机库)无法在​​ 64 位 Java VM 上运行。(看起来像肥皂用户界面就是这样一个候选者 - 在 4.0.1 和 4.5 beta 1 版本中,如果在 64 位 VM 中运行,它会因分段错误而失败。)

我尝试安装 i386 版本的 openjdk-6-jre,除了 64 位版本之外,但 aptitude 拒绝了此操作(说它与现有的 64 位版本冲突)。如果我尝试安装 32 位版本的 openjdk-jre-7,也会发生同样的情况。

回答我可以在 64 位系统上运行 Java 32 位应用程序吗建议安装ia32-sun-java6-bin,但没有具有该名称的包(或任何带有ia32和 Java 的内容)。

我可以做什么来运行 SoapUI,而无需将整个系统 Java 安装切换为 32 位?

答案1

安装多个版本的 Java 非常简单。稍微困难(或者说乏味)的是随心所欲地在各个版本之间切换。

末日审判

  1. apt-get 一个
  2. 解开另一个
  3. 导出路径取决于你想要哪一个

apt-get 一个版本

决定您最常使用的版本。或者决定您希望哪个版本自动更新。或者抛硬币,随便什么。您甚至不必使用apt-get;只需在您的系统上手动维护这两个软件包(参见下一个标题)。

重点是:使用 Ubuntu 的包管理器更容易维护一个包版本,比如 java。剩下的事你只需要处理。

解开另一个

下载 jdk tarball。将其解压到/opt

在它们之间切换

我让包管理器处理我的主要安装。当我需要时,我会为另一个包导出一些变量。我经常使用命令行,所以这对我来说是个不错的解决方案。我担心:

export JAVA_HOME=/opt/jdk
export PATH=$JAVA_HOME/bin:$PATH

另外,我使用符号链接jdk/->jdk1.6.0_3/因为我很懒,不喜欢在每次增量 jdk 升级时重新配置我的 .bashrc 和其他脚本。

您可能关心的环境变量:

JAVA_LIBDIR
JNI_LIBDIR
JAVAJNI_LIBDIR
JVM_ROOT
JAVA_HOME
PATH

答案2

安装

第一的,下载Sun 的最新 32 位 JDK(不是 JRE)。当时对我来说,它是 jdk-6u7-linux-i586.bin。

安装 java 包:

sudo apt-get install java-package 

现在使用 java-package 从您下载的二进制文件构建 .deb 包。您必须诱使它构建 32 位包:

DEB_BUILD_GNU_TYPE=i486-linux-gnu DEB_BUILD_ARCH=i386 fakeroot make-jpkg jdk-6u7-linux-i586.bin 

这应该会生成一个 .deb 包。由于某种原因,包名称带有 _amd64 后缀。安装包:

sudo dpkg -i sun-j2sdk1.6_1.6.0+update7_amd64.deb 

使用 update-alternatives 选择新的 JDK。它安装在 /usr/lib/j2sdk1.6-sun。

sudo update-alternatives --config java 

如果你运行 java -version 你应该会看到正确的版本:

java version "1.6.0_07"
Java(TM) SE Runtime Environment (build 1.6.0_07-b06)
Java HotSpot(TM) Server VM (build 10.0-b23, mixed mode)

32 位 Eclipse

我必须重新安装 32 位版本的 Eclipse(因为 SWT 包含本机代码)。我还必须删除 ~/.eclipse 目录,否则 Eclipse 无法启动(这需要重新安装任何插件的新版本)。最后,使用安装位置(/usr/lib/j2sdk1.6-sun)在 Java->Installed JREs 中添加新的 JRE,并将其选为默认 JRE。

參考

答案3

或者你只能安装 ia32-libs

 apt-get install ia32-libs

解压 x86 jre

http://javadl.sun.com/webapps/download/AutoDL?BundleId=63983

如果需要的话,可以将其添加到 PATH 中。

相关内容