總覽

總覽

對於正常開發,我使用 64 位元 VM,當我使用套件管理器安裝 Java 開發工具包 (OpenJDK) 時就會出現該 VM。

但有一些 Java 應用程式(我想包含本機程式庫)無法在 64 位元 Java VM 上運行。 (好像肥皂使用者介面就是這樣的候選者 - 在版本 4.0.1 和 4.5 beta 1 中,如果在 64 位元 VM 中運行,它會因分段錯誤而失敗。

我嘗試除了 64 位元版本之外還安裝 i386 版本的 openjdk-6-jre,但這被 aptitude 拒絕(說它與現有的 64 位元版本衝突)。如果我嘗試在 32 位元版本中安裝 openjdk-jre-7,也會發生相同的情況。

一個答案我可以在 64 位元系統上運行 Java 32 位元應用程式嗎建議安裝ia32-sun-java6-bin,但沒有具有此名稱的套件(或任何帶有ia32Java 的套件)。

我可以在這裡做什麼來運行 SoapUI,而不將整個系統 Java 安裝切換到 32 位元?

答案1

安裝多個版本的 Java 非常簡單。有點困難(讀作:乏味)的是隨心所欲地在版本之間切換。

總覽

  1. apt-get 一個
  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

答案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 位元日食

我必須重新安裝 32 位元版本的 Eclipse(因為 SWT 包含本機程式碼)。我還必須刪除 ~/.eclipse 目錄,否則 Eclipse 將無法啟動(這需要重新安裝任何外掛程式的新版本)。最後,使用安裝位置 (/usr/lib/j2sdk1.6-sun) 在 Java->Installed JREs 中新增新的 JRE,並將其選擇為預設值。

參考

答案3

或者你可以只安裝ia32-libs

 apt-get install ia32-libs

解壓縮 x86 jre

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

如果需要的話,請添加到 PATH 中。

相關內容