除64位版本外,是否可以安装32位Java?


14

对于正常开发,我使用随软件包管理器安装Java开发套件(OpenJDK)时提供的64位VM。

但是有些Java应用程序(我想包含本地库)在64位Java VM上不起作用。(看起来SoapUI就是这样的候选者-在4.0.1和4.5 beta 1版中,如果在64位VM上运行,它将失败并出现分段错误。)

除了64位版本外,我还尝试安装i386版本的openjdk-6-jre,但是由于性能问题,它被拒绝了(因为它与现有的64位版本冲突)。如果尝试在32位版本中安装openjdk-jre-7,也会发生相同的情况。

是否可以在建议安装的64位系统上运行Java 32位应用程序的答案ia32-sun-java6-bin,但是没有使用该名称的软件包(或ia32Java和Java)。

在不将整个系统Java安装切换到32位的情况下,我该怎么办才能运行SoapUI?


实际上,我通过编辑shell脚本以传递一些不同的参数,从而设法以64位版本运行soapUI。我必须查一下我到底做了什么。
圣保罗Ebermann

有关从存储库安装64位和32位Java的信息,请参见askubuntu.com/questions/111947/…。您也可以更改默认值。
user68186 2014年

Answers:


4

安装多个Java版本非常容易。一时之间在版本之间切换比较困难(阅读:乏味)。

tldr

  1. 合适的
  2. 解开对方
  3. 导出路径取决于您想要的路径

apt-get一个版本

确定您将主要使用哪个版本。或决定要自动更新哪一个。或掷硬币,随便。您甚至不必使用apt-get; 只需手动维护系统上的两个软件包即可(请参见下一个标题)。

关键是:使用Ubuntu的软件包管理器来维护java之类的软件包的一个版本更容易。你会照顾好剩下的。

解开对方

下载jdk压缩包。将其提取到/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

您是否也可以.deb将其他体系结构而不是压缩包获得?
0xC0000022L13年

@ 0xC0000022L想法是您将每个版本都包含在其自己的目录中。如果可以的话,那就太好了!
djeikyb

2

安装

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

安装java-package:

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

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

参考


谢谢,我会尝试一下...尽管我不希望32位默认设置,但只能将其用于少数不支持64位的程序。
圣保罗Ebermann

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.