2012-05-06 153 views
16

我想在我的Ubuntu安裝的OpenJDK-7,但我發現了以下錯誤:OpenJDK的-7的JRE - 封裝的OpenJDK-7,JRE沒有安裝候選人

$ sudo apt-get install openjdk-7-jre 
Reading package lists... Done 
Building dependency tree  
Reading state information... Done 
Package openjdk-7-jre is not available, but is referred to by another package. 
This may mean that the package is missing, has been obsoleted, or 
is only available from another source 
E: Package openjdk-7-jre has no installation candidate 

我想我錯過了一些回購或類似的東西,但我無法找到任何參考在哪裏和什麼。

+2

可能是一個很好的問題http://askubuntu.com/ – Jeffrey

+0

Openjdk-7-jre不在Ubuntu 10.04/Lucid的正常回購站中。這裏有一個關於同樣問題的問題,解決方案是使用webupd8包:http://stackoverflow.com/questions/8914679/how-can-i-install-openjdk-7-jdk-on-lucid-10-04 -lts – birryree

回答

13

我最近不得不在CentOS,openSUSE的和Ubuntu安裝Java 7,和許多微動和研究後,終於看中了這一點,這對所有三種口味的作品:

  • 忽略(和卸載)任何的JRE或隨您的發行版捆綁/隨附的JDK。他們比他們的價值更麻煩,並始終支持最新的更新。
  • http://www.oracle.com/technetwork/java/javase/downloads/index.html下載JRE 7(或者如果您想開發JDK 7)。
    • 對於JRE,如果您有64位機器,請獲取jre-xxx-linux-x64.tar.gz,如果是32位,請獲取jre-xxx-linux-i586.tar.gz。不要打擾RPM。
    • 對於JDK,如果您有64位機器,則獲取jdk-xxx-linux-x64.tar.gz,如果是32位,則獲取jdk-xxx-linux-i586.tar.gz。
  • 執行以下作爲root或使用sudo:
    • #焦油-xzvf JDK-XXX-Linux的x64.tar.gz(或任何一個你下載)
    • #的mkdir/USR/JAVA
    • #MV jdkx.x.x_xx的/ usr/Java(或,如果JRE,這將是所提取的JRE目錄)
    • #LN -s /usr/java/jdkx.x.x_xx的/ usr /爪哇/ jdkx
    • #ln -s/usr/java/jdkx/usr/java/latest
    • #LN -s在/ usr/JAVA /最新的/ usr/JAVA /默認
    • #LN -s在/ usr/java/default文件/ bin中/ JAVA的/ usr/bin中/ JAVA
    • #LN -s在/ usr/java/default/bin/javac
    • #ln -s/usr/java/default/bin/javah/usr/bin/javah
    • #ln -s/usr/java/default /斌/的Javadoc在/ usr/bin中/ javadoc的
    • #LN -s在/ usr/java/default文件/ bin中/ javaws的在/ usr/bin中/ javaws的

Obviousl你必須在這裏填寫一些空格,但你應該得到這張照片。作爲一個工作的例子,這裏是我的安裝(注意,對於我而言,我需要對兩個的Java 7和Java 6的JDK的64位和32位版本,所以有很多):

# ls -al /usr/java/ 
total 24 
drwxr-xr-x 6 root root 4096 Sep 2 11:02 . 
drwxr-xr-x 14 root root 4096 Aug 9 22:14 .. 
lrwxrwxrwx 1 root root 16 Aug 26 20:05 default -> /usr/java/latest 
drwxr-xr-x 8 root root 4096 Sep 2 10:52 jdk1.6.0_35 
drwxr-xr-x 8 root root 4096 Sep 2 10:52 jdk1.6.0_35-32 
drwxr-xr-x 8 root root 4096 Sep 2 10:52 jdk1.7.0_07 
drwxr-xr-x 8 root root 4096 Sep 2 10:52 jdk1.7.0_07-32 
lrwxrwxrwx 1 root root 11 Sep 2 10:54 jdk6 -> jdk1.6.0_35 
lrwxrwxrwx 1 root root 14 Sep 2 10:54 jdk6-32 -> jdk1.6.0_35-32 
lrwxrwxrwx 1 root root 11 Sep 2 10:54 jdk7 -> jdk1.7.0_07 
lrwxrwxrwx 1 root root 14 Sep 2 10:54 jdk7-32 -> jdk1.7.0_07-32 
lrwxrwxrwx 1 root root 4 Sep 2 10:55 latest -> jdk7 
# ls -al /usr/bin/java* 
lrwxrwxrwx 1 root root 26 Aug 26 20:05 /usr/bin/java -> /usr/java/default/bin/java 
lrwxrwxrwx 1 root root 27 Aug 26 20:05 /usr/bin/javac -> /usr/java/default/bin/javac 
lrwxrwxrwx 1 root root 29 Aug 26 20:05 /usr/bin/javadoc -> /usr/java/default/bin/javadoc 
lrwxrwxrwx 1 root root 27 Aug 26 20:07 /usr/bin/javah -> /usr/java/default/bin/javah 
lrwxrwxrwx 1 root root 28 Aug 26 20:05 /usr/bin/javaws -> /usr/java/default/bin/javaws 
# java -version 
java version "1.7.0_07" 
Java(TM) SE Runtime Environment (build 1.7.0_07-b10) 
Java HotSpot(TM) 64-Bit Server VM (build 23.3-b01, mixed mode) 
+0

同樣重要的是:由於Oracle對於每次要下載Java時都同意他們的條款提出了嚴格的新要求,因此無法再使用wget之類的東西下載Java。它必須通過瀏覽器下載。如果您的Linux計算機無GUI並且/或者通過SSH連接到它,則需要將文件下載到本地計算機上,然後使用類似scp的文件將文件複製到Linux計算機上。 –

+0

你能解釋爲什麼你有這個/默認/文件夾?我不僅在當地看不到,我不確定它爲什麼在那裏。謝謝。 – theJollySin

+0

如果您在手動設置所有這些符號鏈接的地方使用'update-java-alternatives'命令,我認爲您會跳過很多這些步驟。一旦您在一個Java實例上首次手動設置所有符號鏈接,您可以使用單個「update-java-alternatives」命令切換所有符號鏈接。 – djangofan

4

在Ubuntu上清晰的64位,我需要這個鏈接加入連鎖:

ln -s /usr/java/latest /usr/java/default 
2

方式甲骨文正在成爲限制性關於Java具有另一種是剛剛好。我認爲openjdk非常好。在Ubuntu這樣的debian系統上安裝它是無痛的。請使用apt-get這樣的:如果你的apt-get的緩存/元數據未更新資料庫最新的變化,其中包括了OpenJDK-7

$ sudo apt-get update 
$ sudo apt-get install openjdk-7-jdk 

更新是必需的。邏輯上安裝pacakge openjdk-7-jre也應該工作,除非你的發行版本不太舊。

+0

http://packages.ubuntu.com/search?keywords=openjdk-7-jre它只能通過oniric和以上。 –

+0

是的,可以通過oneiric獲得,而不是通過oniric。哪裏不對? –

+5

海報正在運行Lucid而不是Oneiric,它是以前的版本。在Debian世界中,建議不要混合來自不同版本的軟件包,因爲它可能會導致依賴衝突。 –