OpenJDK / OpenJREを正しく削除し、SunJDK / SunJREをデフォルトとして設定する方法


49

UbuntuはSun JDK / JREよりもOpenJDK / JREを非常に好むようです。Sun JRE、JDK、およびプラグインをインストールし、OpenJDK関連のパッケージを取り出した後でも、apt-getはいくつかのパッケージを依存関係としてインストールし直しました。この動作を修正してSun Javaパッケージを使用できますか?Javaスタックを1つだけインストールし(そう、OCDが少しありますが、システムをクリーンにしたい)、Sun Javaにしたいです。

更新: Marcos Rorizが指摘するように、問題はdefault-jre(Java依存パッケージが依存するために使用する)がOpenJDKを指しているように見えるため、default-jre / default-jdkをハックして指すように質問するようですSun Javaへ。


オラクルjdkで答えを更新してください。
LoveToCode

回答:


35

古いバージョンのUbuntu(9.10以下)にSun Javaをインストールする

約3年前にUbuntu 8.04で同じ問題が発生したと思います。openjreを使用しているときに奇妙な問題があり、sun jreバージョンを使用して問題を解決しました。10.04以降のバージョンに適用される端末の手順は次のとおりです。10.04からは、Sun Javaが削除され、openjreに置き換えられました。

sudo apt-get remove openjdk-6-jre default-jre default-jre-headless

sudo apt-get install sun-java6-jre sun-java6-bin sun-java6-plugin sun-java6-fonts

(Sun java関連のすべて。念のため)

その後、openjdkを削除した場合、sun javaのみが使用されます。削除しなかった場合は、両方があります。あるものから別のものに変更するには、これを行います

sudo update-java-alternatives -l -これにより、使用できるJavaエンジンのリストが表示されます。

Javaの代替の名前は左にあるため、たとえばopenjdkは次のように表示されます。

java-6-openjdk 1061 /usr/lib/jvm/java-6-openjdk

そして、次のようにシステムをopenjdkに設定します。

sudo update-java-alternatives -s java-6-openjdk

Sunを使用する場合は、次のようにします(sunパッケージのインストール後)。

sudo update-java-alternatives -s java-6-sun

Java 7バージョンを使用する場合は、上記の7の番号6を変更するだけです。たとえば、openjreバージョン7をインストールする場合は、次のようにします。

sudo apt-get install openjdk-7-jre default-jre default-jre-headless

Ubuntuの新しいバージョン(10.04以上)にSun Javaをインストールする

ターミナルを開き、次を入力します。

sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update   
sudo apt-get upgrade   
sudo apt-get install oracle-java7-installer

これにより、システムにSun Javaバージョンがインストールされます。それに変更するには、他のJavaの代替手段がある場合に備えて、次の手順を実行します。

sudo update-java-alternatives -s java-7-oracle  

インストールを自動化する場合は、次を入力します。

sudo echo oracle-java7-installer shared/accepted-oracle-license-v1-1 select true | sudo /usr/bin/debconf-set-selections

その後、次の手順を実行してデフォルトの環境変数を設定します。

sudo apt-get install oracle-java7-set-default

PPAにはバージョン6、7、および8が含まれていることに注意してください。たとえば、インストール行の番号を変更するだけで、いずれのバージョンでもインストールできます。

sudo apt-get install oracle-java8-installer

Java 8をインストールします。使用するJavaバージョンをインストールし、update-java-alternativesコマンドでバージョンをデフォルトに設定した後、次のコマンドを入力して、使用しているバージョンを確認できます。

java -version

その時点で使用しているデフォルトのバージョンが表示されます。

また、OpenJRE / JDKは、Sun Javaに変更することで解決された多くの問題があった2、3年前から長い道のりを歩んできたことに言及したいと思います。


11

問題は、いくつかのJavaパッケージがopenjdk-jreを指すdefault-jreに依存していることだと思います。openjdkを完全にアンインストールする簡単な方法はないと思います。問題は、Javaパッケージ/プログラムをインストールすると、おそらくopenjdkに再びぶつかります。

ただし、両方を使用する場合は、Javaランタイムプログラム(java、javah、javapなど)をsun実装に簡単に設定できます。やれ:

sudo apt-get install sun-java6-jre sun-java6-plugin sun-java6-fonts

または、Java開発者(sdkおよびsrcsをインストール)の場合:

sudo apt-get install sun-java6-jdk sun-java6-jre sun-java6-source

そして、それをデフォルトのプログラムとして設定します:

sudo update-java-alternatives -s java-6-sun

1
はい、これはdefault-jreについてのものだと思います。いいえ、Sun JDKとOpen JDKの両方を持ちたくはありません。default-jreをハックしてSun JREを指す方法はありますか?
イヴァン

うん、default-jre今晩sun-javaを指すようにパッケージを再構築してみます。今は仕事中です。
マルコスロリスジュニア

6

.jdk1.6.0_23.jinfoファイルが付属プログラムとそのパスのリストでなければなりません。説明的なヘッダーの後に空白行が続きます。次に、3つのフィールド形式のプログラムのリスト:エントリタイプ(jre / jkd / plugin); プログラム名; とパス。内容がどのように見えるかを確認するために使用できるjinfoファイルがいくつかあるはずです。これは、代替メカニズムによって使用される可能性が高く、作成するリンクを決定します。私のSunパッケージの頭は。

name = java-6-sun-1.6.0.22
alias = java-6-sun
priority = 63
section = non-free

jre ControlPanel / usr / lib / jvm / java-6-sun / jre / bin / ControlPanel
jre java / usr / lib / jvm / java-6-sun / jre / bin / java
jre java_vm / usr / lib / jvm / java-6-sun / jre / bin / java_vm

代替メカニズムを使用せずにデフォルトのJavaコマンドをオーバーライドする場合は、Javaパスを/ usr / binの前に置きます。

手動インストールを行うとき、Javaをにインストールします/opt。あなたのインストールのために私はにインストールしたでしょう/opt/jdk1.6.0_23。次に$JAVA_HOME/binPATH変数の先頭にパスを配置します。

編集:これはSunファイル全体です。注.java-6-sun.jinfoはへのシンボリックリンク.java-6-sun-1.6.0.22.jinfoです。

name = java-6-sun-1.6.0.22
alias = java-6-sun
priority = 63
section = non-free

jre ControlPanel / usr / lib / jvm / java-6-sun / jre / bin / ControlPanel
jre java / usr / lib / jvm / java-6-sun / jre / bin / java
jre java_vm / usr / lib / jvm / java-6-sun / jre / bin / java_vm
jre javaws / usr / lib / jvm / java-6-sun / jre / bin / javaws
jre jcontrol / usr / lib / jvm / java-6-sun / jre / bin / jcontrol
jre keytool / usr / lib / jvm / java-6-sun / jre / bin / keytool
jre pack200 / usr / lib / jvm / java-6-sun / jre / bin / pack200
jre policytool / usr / lib / jvm / java-6-sun / jre / bin / policytool
jre rmid / usr / lib / jvm / java-6-sun / jre / bin / rmid
jre rmiregistry / usr / lib / jvm / java-6-sun / jre / bin / rmiregistry
jre unpack200 / usr / lib / jvm / java-6-sun / jre / bin / unpack200
jre orbd / usr / lib / jvm / java-6-sun / jre / bin / orbd
jre servertool / usr / lib / jvm / java-6-sun / jre / bin / servertool
jre tnameserv / usr / lib / jvm / java-6-sun / jre / bin / tnameserv
jre jexec / usr / lib / jvm / java-6-sun / jre / lib / jexec
jdk HtmlConverter / usr / lib / jvm / java-6-sun / bin / HtmlConverter
jdk appletviewer / usr / lib / jvm / java-6-sun / bin / appletviewer
jdk apt / usr / lib / jvm / java-6-sun / bin / apt
jdk extcheck / usr / lib / jvm / java-6-sun / bin / extcheck
jdk idlj / usr / lib / jvm / java-6-sun / bin / idlj
jdk jar / usr / lib / jvm / java-6-sun / bin / jar
jdk jarsigner / usr / lib / jvm / java-6-sun / bin / jarsigner
jdk javac / usr / lib / jvm / java-6-sun / bin / javac
jdk javadoc / usr / lib / jvm / java-6-sun / bin / javadoc
jdk javah / usr / lib / jvm / java-6-sun / bin / javah
jdk javap / usr / lib / jvm / java-6-sun / bin / javap
jdk jconsole / usr / lib / jvm / java-6-sun / bin / jconsole
jdk jdb / usr / lib / jvm / java-6-sun / bin / jdb
jdk jhat / usr / lib / jvm / java-6-sun / bin / jhat
jdk jinfo / usr / lib / jvm / java-6-sun / bin / jinfo
jdk jmap / usr / lib / jvm / java-6-sun / bin / jmap
jdk jps / usr / lib / jvm / java-6-sun / bin / jps
jdk jrunscript / usr / lib / jvm / java-6-sun / bin / jrunscript
jdk jsadebugd / usr / lib / jvm / java-6-sun / bin / jsadebugd
jdk jstack / usr / lib / jvm / java-6-sun / bin / jstack
jdk jstat / usr / lib / jvm / java-6-sun / bin / jstat
jdk jstatd / usr / lib / jvm / java-6-sun / bin / jstatd
jdk native2ascii / usr / lib / jvm / java-6-sun / bin / native2ascii
jdk rmic / usr / lib / jvm / java-6-sun / bin / rmic
jdk schemagen / usr / lib / jvm / java-6-sun / bin / schemagen
jdk serialver / usr / lib / jvm / java-6-sun / bin / serialver
jdk wsgen / usr / lib / jvm / java-6-sun / bin / wsgen
jdk wsimport / usr / lib / jvm / java-6-sun / bin / wsimport
jdk xjc / usr / lib / jvm / java-6-sun / bin / xjc
プラグインxulrunner-1.9-javaplugin.so /usr/lib/jvm/java-6-sun/jre/lib/amd64/libnpjp2.so
プラグインmozilla-javaplugin.so /usr/lib/jvm/java-6-sun/jre/lib/amd64/libnpjp2.so

javaがインストールされていないので、それに関連するものは何もありません。何もインストールされていません。.jinfoファイルなどはありません。そのままにしておくつもりです。だからこそ、SunのJDKの.jinfoファイルの完全なコンテンツを見たいのです。
ジャーチックス

完全なsun .jinfoファイルを追加しました。
-BillThor

6

openjdkとicedteaを削除します。

apt-get purge openjdk-\* icedtea-\* icedtea6-\*

以下を/etc/apt/sources.listに追加します

deb http://ppa.launchpad.net/webupd8team/java/ubuntu YOUR_UBUNTU_VERSION_HERE main

Sun / Oracle JREまたはJDKをインストールします。

apt-get install oracle-jdk7-installer
apt-get install oracle-java7-installer 

2
そして、この後、Javaがまったくなくなります...問題は、システムからOpenJDKを削除する方法ではなく、実際に誰かを他の人に置き換えることです。回答にもう少し情報を追加してください。これらの手順に従うだけでは質問に回答できません。
ブルーノペレイラ

4

次の行を/ etc / environmentファイルに追加しました:JAVA_HOME = "/ usr / lib / jvm / jdk1.6.0_23"およびJAVA_HOME / binをPATH変数に追加しましたが、OSはまだコマンドjavaを認識しませんインストールされておらず、gcjとopenjdkを提供します。

確認しましたか?

echo $JAVA_HOME 
echo $PATH

必要ない場合:openjdkとgcjをsynapticまたはapt-getで削除します。

apt-get remove gcj 
apt-get remove openjdk

その場合、私はjavaを代替手段から禁止し、主にBillThorが提案したように、なぜ彼に賛成票を投じました。

which javac
which java

javaをインストールした場所、およびjavaがPATHで見つかった場所を指す必要があります。


gcjまたはopenjdkがインストールされていません... whichコマンドを試してみても何も表示されません。PATHのJAVA_HOME変数の前に$記号を忘れていたことがわかったので、今すぐ再起動して、それがどうなるかを確認します。
11

PCを再起動しましたが、whichコマンドには何も表示されません。JAVA_HOME変数とPATH変数の両方が正しい:echo $ JAVA_HOME /usr/lib/jvm/jdk1.6.0_23 echo $ PATH $ JAVA_HOME / bin:/ usr / local / sbin:/ usr / local / bin:/ usr / sbin:/ usr / bin:/ sbin:/ bin:/ usr / games問題はどこにあるのでしょうか?編集:GOD DAMN IT、コメントに改行がないのはなぜですか??
ジャーチックス

a)PCを再起動する必要はありません。シェルを再度開くだけで十分であるか、ほとんどの場合ユーザーとして再ログインします。b)ヘルプ内でコメント内の書式設定を確認します。わかりましecho $PATH $JAVA_HOME/bin:/usr/local/sbin...たが、結果では$ JAVA_HOMEを評価する必要があります-何か問題があるか、レポートに誤りがあります。c)改行:存在しないので、Enterキーを押すのが早すぎます。その後、数分だけ編集が許可されるため、クロックが刻みます。私はそれが嫌いです!:)
ユーザー不明

まあ、JAVA_HOME変数は同じファイル(/ etc / environment)の最初の行にあります。たぶんそれは他のどこかにあるべきでしょうか?私が入力するときにそれを認識しecho $JAVA_HOMEます
...-jurchiks

私の質問は:JAVA_HOMEの値を印刷するか、echo $PATH印刷する$JAVA_HOME...か、つまり:/usr/lib/jvm/jdk1.6.0_23
ユーザー不明

3
  1. [システム]-> [管理]-> [Synaptic Package Manager]を開き、OpenJDKを完全に削除します。
  2. java -versionシェルでのJavaタイピングのテストバージョン(Sun Javaのみが表示されます)
  3. タイプ sudo update-java-alternatives -l
  4. 完了です。これでsun javaのみがインストールされ、デフォルトのjdkとしてセットアップされました

また、2つのjdkがインストールされていて、デフォルト環境としてsun-javaを設定する場合にのみ機能します


2

Ubuntu 10.10を使用すると、まずSynapticでlibaccess-bridge-javaを削除するようマークし、次にopenjdk-6-jre-headlessをマークする必要があります。

私はリストを削除することになりました:

ca-certificates-java、icedtea-6-jre-cacao、libaccess-bridge-java、libaccess-bridge-java-jni、openjdk-6-jre、openjdk-6-jre-headless、openjdk-6-jre-lib

これは機能しましたが/etc/java-6-openjdk、さまざまなファイルとサブディレクトリを含むディレクトリを残し、新しいディレクトリに分離しました。異常な効果はなかったので、おそらく残り物の残骸にすぎません。

これにより、Java Webサイトから直接ダウンロードしたJavaが残りました。ただし、デフォルトとして設定し、Firefoxプラグインディレクトリへのリンクを作成したにもかかわらず、機能しなくなりました。sun-java6-jreとその関連パッケージgsfonts-x11、odbcinst、odbcinst1debian2、sun-java6-bin、unixodbcをSynaptic経由でインストールすると、Javaプラグインが再び動作し始めました。プラグインディレクトリ内のリンクを削除し、実際のlibnpjp2.soファイルに置き換えても機能しませんでした。Synapticを介してインストールされたJavaのns7またはns7-gcc29ディレクトリのlibjavaplugin_oji.soファイルへのリンクを使用しても機能しませんでした。これは、Firefoxで最新のJavaプラグインを入手するには、Java Webサイトの指示に従うことができ、ダウンロードされたJavaを実行するにはさまざまな種類の統合Linux Javaが必要であることを示唆しています。プラグインがアクティブ化されると、その周囲のファイルに対する操作に依存します。JavaとLinuxを含むコードを完全に理解することは、その謎を実際に解決するために必要ですが、おそらくこれらの実験は、この場合に2つのJavaが必要になる理由を見つけるのに役立つでしょう。少なくとも誰かがそれを行うのが便利だと思ったら、すべてのJavaも削除することが可能です。


2

新しいUbuntu 10.10マシンで行うことは

  • java-6-sunを追加し、
  • openJDKを削除します(最初にSun Javaを追加します

それから私にとっては問題ありません、これ以上openJDKの依存関係はありません


java-6-sunはubuntu-default-packageではありませんか?
ファビアンゼインドル

2

この質問に対する答えは私にとってはうまくいきませんでした。つまり、次は失敗しました。

sudo apt-get purge sun-java5-jre sun-java6-font sun-java6-jre

エラーあり:

Virtual packages like 'sun-java6-jre' can't be removed

代わりに次の手順を試してください:

  1. Ubuntu Software Centerを開きます。
  2. IcedTeaを検索します。
  3. IcedTea Java Plug-in(icedtea-6-jre-cacao)がインストールされている場合は削除します。
  4. OpenJDK Java 7ランタイムを選択します。
  5. インストールをクリックします。
  6. 41.6 MBパッケージがダウンロードおよびインストールされるのを待ちます。

OpenJDK(IcedTea)がインストールされました。これにより、(このエラーが発生した場合)エラーなしでOracleのJDKのインストールを続行できます。

こちらもご覧ください:


1

最初:openjdkとicedteaプラグインを削除します。

sudo apt-get remove openjdk* icedtea*

2番目:.bin jdkファイルを/ optまたは/ usr / javaにコピーして抽出します。

sudo cp jdk_1.16.0.bin /usr/java

3番目:javaファイルのリンクを/ usr / bin /に配置します

ln -s /usr/java/jdk_1.6.0/bin/java /usr/bin/java
ln -s /usr/java/jdk_1.6.0/bin/javac /usr/bin/javac

update-alternativesを使用して選択肢を更新します

FirefoxプラグインディレクトリにJavaプラグインへのシンボリックリンクを作成します。

FirefoxプラグインディレクトリにJavaプラグインlibnpjp2.soファイルへのシンボリックリンクを作成します。

   cd  

<Firefox>/plugins


 ln -s  

<JRE>/lib/i386/libnpjp2.so .

お役に立てれば。


cpの後、リンクする前のステップを見逃していませんか?そして:手動リンクをお勧めしますが、java / binには45個のファイルがあり、そのほとんどが実行可能です。25個のシンボリックリンクを作成しますか?PATHの変更を希望します。
ユーザー不明

私の知る限り、手順は正しいです。sun(oracle's)javaインストールページのチュートリアルを参照できます。上記の手順は私にとってはうまくいきました!どうやって仲良くなるか教えてください。
Ubuntuser
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.