对于正常开发,我使用通过包管理器安装 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 非常简单。稍微困难(或者说乏味)的是随心所欲地在各个版本之间切换。
末日审判
- apt-get 一个
- 解开另一个
- 导出路径取决于你想要哪一个
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 中。