ラベル java の投稿を表示しています。 すべての投稿を表示
ラベル java の投稿を表示しています。 すべての投稿を表示

土曜日, 6月 11, 2011

Mac OS X で Java のアップデート

背景

JPCERT/CC からの 注意喚起にて、Java SE のクリティカルパッチアップデートがあることを知る。Java SE 6 Update 26 にアップデートする必要があるようだ。


環境

現在の環境は、以下の通りです。

  • Mac OS X version 10.6.7


現状確認

JPCERT/CC によると、以下のページで Java のバージョンの確認が出来るようだ。

Java のバージョンの確認


実際に確認してみたところ、以下のページが表示された。



Mac をお使いの場合: お使いの Mac に最新バージョンの Java がインストールされているかどうかを確認するには、アップルメニューのソフトウェアアップデート機能を使用します。

とのことだが、ソフトウェアアップデート機能を使用しても何の更新も起こらない。

iTerm2 から以下のコマンドを入力すると、古いバージョン(1.6.0_24)のままであることが分かる。

$ java -version



対策

以下の自分のブログの記事を参考にして、"Java for 10.6 Update 5" をインストールした。

自分のための日記: Eclipse で rt.jar のソースを見る方法


インストールすると、/Library/Java/JavaVirtualMachines に 1.6.0_24-b07-334.jdk の他に 1.6.0_26-b03-377.jdk がインストールされていることが分かる。


ついでだから、上記の自分のブログを参考に、Eclipse で使う JRE を 1.6.0_26 の JRE に変更しておいた。


因みに、1.6.0_24-b07-334.jdk は必要なさそうというか、以下の記事を参考にすると「旧バージョンの Java は削除することを推奨する」とのことだったので削除した。

JDK および JRE 6 Update 26 が公開されています - 特に重要なセキュリティ欠陥・ウイルス情報


1.6.0_24-b07-334.jdk を削除するとどうでしょう。java -version とコマンドを入力すると、バージョンが 1.6.0_26 となっていることを確認することが出来ました。



感想

あれ?おかしくない?java コマンドは /usr/bin/java にあり、/usr/bin/java は /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java へのシムリンクになっている。

$ which java
/usr/bin/java
$ ls -l /usr/bin/java
(略)java -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java

/System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java の親フォルダが /Library/Java/JavaVirtualMachines/1.6.0_26-b03-377.jdk/Contents/Home/bin へのシムリンクになっているのかと思ったが、そうではないようだ。

「現状確認」でも確認したように、Mac の場合、「最新バージョンの Java がインストールされているかどうかを確認するには、アップルメニューのソフトウェアアップデート機能を使用」するしかないようなので、ソフトウェアアップデートによって Java を最新の状態にすることでデフォルトの Java が最新の状態になるのかと思っていた。しかし、開発版の Java を入れることで Java が最新になった。

自分でも何がなんだか分からない。

Mac OS X 上にある java コマンドを探すと

$ find / -name java -type f 2>/dev/null
/Library/Java/JavaVirtualMachines/1.6.0_26-b03-377.jdk/Contents/Home/bin/java
/System/Library/Frameworks/JavaVM.framework/Versions/A/Commands/java
/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/bin/java
/usr/share/file/magic/java

と表示される。それぞれのコマンドで java -version を実行してみた。

  1. /Library/Java/JavaVirtualMachines/1.6.0_26-b03-377.jdk/Contents/Home/bin/java
  2. /System/Library/Frameworks/JavaVM.framework/Versions/A/Commands/java
  3. /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/bin/java
  4. /usr/share/file/magic/java
とする。
  1. java version "1.6.0_26"
  2. java version "1.6.0_26"
  3. java version "1.6.0_24"
  4. zsh: permission denied: /usr/share/file/magic/java
4. は、file コマンドが使う magicfile と呼ばれるデータベースのようだ。 【参考】 2005年4月 | 今日の一行 | column | OSS-Web

という訳で、システムにインストールされている Java で 1.6.0_26 のものは、

  • /Library/Java/JavaVirtualMachines/1.6.0_26-b03-377.jdk/Contents/Home/bin/java
  • /System/Library/Frameworks/JavaVM.framework/Versions/A/Commands/java

で、1.6.0_24 のものは、

  • /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/bin/java

だった。

「アップルメニューのソフトウェアアップデート機能を使用」することで、/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/bin/java のバージョンが 1.6.0_26 になるのではないか、と信じている。

金曜日, 6月 03, 2011

Eclipse で rt.jar のソースを見る方法

完全にこちらのサイトを参考にしました。



環境

  • Mac OS X version 10.6.7
  • Eclipse ( Version : Helios Service Release 2 )


ダウンロード

Developer Downloads & ADC Program Assets から "Java for Mac OS X 10.6 Update 4 Developer Package" をダウンロード(2011年6月3日現在での最新版)。


インストール

ダウンロードした dmg ファイルを解凍してインストール。


src.jar のパス

以下の手順に従って、src.jar があるパスを突き止める。

  1. /Applications/Utilities から Java Preferences.app を起動する
  2. General タブにある "Java SE 6" をダブルクリックする
    • 因みに、"Java SE 6 (System)" をダブルクリックしても何も起こらなかった
    • 自分の CPU-Type は 32-bit だが、CPU-Type が 64-bit の "Java SE 6" をダブルクリックしても目的とするフォルダが開いた
  3. 1.6.0_24-b07-334.jdk を右クリックして Show Package Contents を選択する
  4. 1.6.0_24-b07-334.jdk/Contents/Home ディレクトリの中に src.jar があることを確認する

ということで、私の環境では src.jar は以下にインストールされていた。

/Library/Java/JavaVirtualMachines/1.6.0_24-b07-334.jdk/Contents/Home/src.jar


Eclipse の設定

  1. Eclipse メニューの Preferences を選択する
  2. Prefereces ダイアログの Java の Installed JREs を選択する
  3. Add をクリック
  4. MacOS X VM(多分)を選択して Next をクリック
  5. JRE Home に以下を入力する
    /Library/Java/JavaVirtualMachines/1.6.0_24-b07-334.jdk/Contents/Home
    • Directory... ボタンを押してディレクトリを選択する方式で行くと 1.6.0_24-b07-334.jdk が選択出来ない状態になっていて行き詰まる
  6. 名前は Home にする(適当)
  7. Finish をクリック
  8. デフォルトで使う JRE を Home にする
  9. 既存のプロジェクトを右クリックして Properties をクリック
  10. Java Build Path をクリックし、JRE System Library [JavaSE-1.6] をクリック
  11. Edit... をクリック
  12. ラジオボタンの Workspace default JRE (Home) をクリック
  13. Finish をクリック
  14. JRE System Library [Home] となっていることを確認する
  15. すべての既存のプロジェクトの System Library を JavaSE-1.6 から Home に変更する

既存のプロジェクトの1つを変更すると、あるプロジェクトは System Library が Home に勝手に変更され、あるプロジェクトは JavaSE-1.6 のままだった。System Library が自動で変更されなかったプロジェクトについては、手動で Home に変更した。


使い方

調べたいクラスやメソッドを選択した後、F3 を押すことで、クラス、あるいはメソッドのソースを見ることが出来る!!

これは、便利だ!!

(・∀・)


感想

今まで、なんでエラーになっているかよく分からなかったところ、どういう実装になっているか興味のあったところなど、ソースをみてみたいと思う。特に Collection, Map, HashMap などは興味があるので見てみようと思う。

水曜日, 7月 07, 2010

Ubuntuにjreをインストールする

How to Install Java Runtime Environment (JRE) in Ubuntu 9.04 (Jaunty) | Ubuntu Geek

# apt-get install sun-java6-jre sun-java6-plugin sun-java6-fonts
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています                
状態情報を読み取っています... 完了
以下の特別パッケージがインストールされます:
  gsfonts-x11 java-common odbcinst1debian1 sun-java6-bin unixodbc
提案パッケージ:
  equivs ttf-kochi-gothic ttf-sazanami-gothic ttf-arphic-uming libmyodbc odbc-postgresql libct1
以下のパッケージが新たにインストールされます:
  gsfonts-x11 java-common odbcinst1debian1 sun-java6-bin sun-java6-fonts sun-java6-jre sun-java6-plugin unixodbc
アップグレード: 0 個、新規インストール: 8 個、削除: 0 個、保留: 0 個。
36.0MB のアーカイブを取得する必要があります。
この操作後に追加で 103MB のディスク容量が消費されます。
続行しますか [Y/n]?


私の環境では、以上のパッケージがインストールされました。色々とライセンスに同意するように求められるので、条項を良く読んでインストールを続けます。

とりあえず、javaコマンドが使えることを確認。

$ java -version
java version "1.6.0_15"
Java(TM) SE Runtime Environment (build 1.6.0_15-b03)
Java HotSpot(TM) Server VM (build 14.1-b02, mixed mode)

動いているようです。良かった。