2009年4月18日土曜日

FreeBSD7 JDK1.6インストール Java JDK1.6.0.3p4_10

FreeBSD 7.1/i386
----------------------------
Pentium2/400MHz
Memory 192M
コンパイル・インストール約8-10時間
----------------------------
■jdk1.6インストール けっこう面倒くさい(>_<"

javaをコンパイル実行するためにはjdkをインストールします。
しかしながら、javaのライセンス許諾のためにportsからのmake installだけではインストールできず、Sun Microsystemsより指定されたファイルをライセンス許諾した後で手動でダウンロードしなければなりません。
また、FreeBSD用のパッチも必要でこれも手動でライセンス許諾とダウンロードが必要です。

あと、コンパイルには
●2.5GByteの空きハードディスク領域(#duで確認)
●768MByte以上のスワップ領域(#pstat -sで確認)
が必要です。
私の場合、スワップ領域が足りずにコンパイル途中で止まってしまいました。

■自分でダウンロードするもの
ダウンロードに必要なファイルはコンパイル中に表示されますので、その文章中にあるファイルをダウンロードしてください。バージョンが代わればダウンロードするものもかわりますので以下の記載のままとは限りません。
ダウンロードしたファイルは
/usr/ports/distfiles/
に保存します。

●http://www.java.net/ より fetch でダウンロード
    jdk-6u3-fcs-bin-b05-jrl-24_sep_2007.jar
    jdk-6u3-fcs-mozilla_headers-b05-unix-24_sep_2007.jar
    jdk-6u3-fcs-src-b05-jrl-24_sep_2007.jar
●http://java.sun.com/ より ブラウザを使ってダウンロード
    tzupdater-1_3_12-2009a.zip

●http://www.FreeBSDFoundation.org/ より ブラウザでダウンロード
    
diablo-caffe-freebsd7-i386-1.6.0_07-b02.tar.bz2

●http://www.eyesbeyond.com/freebsddom/java/jdk16.html
 より ブラウザでダウンロード
    bsd-jdk16-patches-4.tar.bz2

後はmake install でインストールされます。

■jdk1.6インストール手順 実録(笑)
実際にmake install してみて、そのメッセージにしたがって必要なファイルをダウンロードしてきます。


#cd /usr/ports/java/jdk16
#make install
lqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqk
x Options for jdk 1.6.0.3p4_10 x
x lqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqk x
x x [ ] DEBUG Enable debugging support x x
x x [ ] IPV6 Enable IPv6 support x x
x x [ ] WEB Enable the browser plugin and Java Web Start x x
x x [ ] POLICY Install the Unlimited Strength Policy Files x x
x x [X] TZUPDATE Update the time zone data x x
x x [ ] JAIL Port is being built within a jail x x
tqmqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqjqu
x [ OK ] Cancel x
mqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqj
IMPORTANT: To build the JDK 1.6.0 port, you should have at least
2.5Gb of free disk space in the build area!


Due to licensing restrictions, certain files must be fetched manually.

Please download the Update 3 Source from
http://www.java.net/download/jdk6/6u3/promoted/b05/jdk-6u3-fcs-src-b05-jrl-24_sep_2007.jar
and the Source Binaries from
http://www.java.net/download/jdk6/6u3/promoted/b05/jdk-6u3-fcs-bin-b05-jrl-24_sep_2007.jar
and the Mozilla Headers from
http://www.java.net/download/jdk6/6u3/promoted/b05/jdk-6u3-fcs-mozilla_headers-b05-unix-24_sep_2007.jar
.

Please open http://java.sun.com/javase/downloads/index.jsp
in a web browser and follow the "Download" link for
"JDK US DST Timezone Update Tool - 1_3_12" to obtain the
time zone update file, tzupdater-1_3_12-2009a.zip.

Please download the patchset, bsd-jdk16-patches-4.tar.bz2, from
http://www.eyesbeyond.com/freebsddom/java/jdk16.html.

Please place the downloaded file(s) in /usr/ports/distfiles
and restart the build.

*** Error code 1

Stop in /usr/ports/java/jdk16.
*** Error code 1

Stop in /usr/ports/java/jdk16.


てなことで、Sun Microsystemsよりファイルをダウンロードしてきなさいといわれましたのでlynxあたりでダウンロードを試みます。
lynxは先にインストールしておいてください。
    #cd /usr/ports/www/lynx
    #make install clean


#cd /usr/ports/distfiles
#fetch http://www.java.net/download/jdk6/6u3/promoted/b05/jdk-6u3-fcs-src-b05-jrl-24_sep_2007.jar
#fetch http://www.java.net/download/jdk6/6u3/promoted/b05/jdk-6u3-fcs-bin-b05-jrl-24_sep_2007.jar
# fetch http://www.java.net/download/jdk6/6u3/promoted/b05/jdk-6u3-fcs-mozilla_headers-b05-unix-24_sep_2007.jar
# lynx http://java.sun.com/javase/downloads/index.jsp


JDK DST Timezone Update Tool - 1.3.12

The tzupdater tool is provided to allow the updating of installed JDK/JRE images with more recent
timezone data in order to accommodate the latest timezone changes. Learn more

Download<<-ここを[Enter]



Register Now[Enter]
必要事項(required)を記入し
submit[Enter]

IDとパスワードを入力して
Log In and Continue[Enter]

チェックを入れて
[X] I agree to the Java SE Timezone Updater License Agreement

continue[Enter]

ライセンスについての但し書きが表示されて

continue[Enter]

Java SE Timezone Updater 1.3.12
tzupdater-1_3_12-2009a.zip 0.25 MB [Enter]

Save to Disk[Enter]

ファイル名を確認して[Enter]

q
(linx終了)


ファイル名がおかしければ修正します。
tzupdater-1_3_12-2009a.zip

#lynx http://www.eyesbeyond.com/freebsddom/java/jdk16.html

download the latest BSD JDK 1.6.0 patchset [Enter]
ACCEPT [Enter]
save to disk [Enter]


次のファイルがあるか確認します。


#ll
-rw-r--r-- 1 root wheel 2116124 Feb 27 06:12 jdk-6u3-fcs-bin-b05-jrl-24_sep_2007.jar
-rw-r--r-- 1 root wheel 8608204 Feb 27 06:13 jdk-6u3-fcs-mozilla_headers-b05-unix-24_sep_2007.jar
-rw-r--r-- 1 root wheel 116791442 Feb 27 06:13 jdk-6u3-fcs-src-b05-jrl-24_sep_2007.jar
-rw-r--r-- 1 root wheel 261842 Apr 18 12:09 tzupdater-1_3_12-2009a.zip
-rw-r--r-- 1 root wheel 960930 Apr 18 14:12 bsd-jdk16-patches-4.tar.bz2

#cd /usr/ports/java/jdk16
#make install clean

Do you agree to the above license terms? [yes or no] yes


待つこと10分?
何も表示がかわらないけど我慢。


lqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqk
x Options for cups-base 1.3.9_3 x
x lqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqk x
x x [ ] GNUTLS Build with GNUTLS library x x
x x [ ] PHP Build PHP support x x
x x [ ] PYTHON Build PYTHON support x x
x x [ ] LIBPAPER Build with libpaper support x x
x x [ ] DNSSD Build with DNS_SD (avahi) support x x
x x [ ] PAM Build with PAM support x x
x x [ ] LDAP Build with LDAP support x x
x x [ ] DBUS Build with DBUS support x x
x x [ ] XDG_OPEN Build with XDG_OPEN as browser x x
x x tqmqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqjqu
x [ OK ] Cancel x
mqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqj


"cups-base"とは"Common UNIX Printing System"で、
このもともとの名前は"cups-lpr"ということで、印刷用モジュールです。
とくにどの言語からもつかわないのでそのまま[OK]と


lqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqk
x Options for diablo-jdk 1.6.0.07.02_4 x
x lqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqk x
x x [ ] POLICY Install the Unlimited Strength Policy Files x x
x x [X] TZUPDATE Update the time zone data x x
tqmqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqjqu
x [ OK ] Cancel x
mqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqj

そのまま[OK]

===> Vulnerability check disabled, database not found
===> Found saved configuration for diablo-jdk-1.6.0.07.02_4

Because of licensing restrictions, you must fetch the distribution
manually.

Please access

http://www.FreeBSDFoundation.org/cgi-bin/download?download=diablo-caffe-freebsd7-i386-1.6.0_07-b02.tar.bz2

with a web browser and "Accept" the End User License Agreement for
"Caffe Diablo 1.6.0".

Please place the downloaded file(s) in /usr/ports/distfiles.

*** Error code 1

Stop in /usr/ports/java/diablo-jdk16.
*** Error code 1

Stop in /usr/ports/java/diablo-jdk16.
*** Error code 1

Stop in /usr/ports/java/jdk16.
*** Error code 1

Stop in /usr/ports/java/jdk16.


おーーーとまった(^-^;;

diablo-caffe-freebsd7-i386-1.6.0_07-b02.tar.bz2

が必要らしい。
ただ同意書に同意しないと持ってこれない。

再びdistfilesフォルダへダウンロードする
#cd /usr/ports/distfiles/

#lynx
http://www.FreeBSDFoundation.org/cgi-bin/download?download=diablo-caffe-freebsd7-i386-1.6.0_07-b02.tar.bz2
lynx: No match.

と表示が出る場合はトップページからダウンロードを試みます。


#lynx http://www.FreeBSDFoundation.org/


Diablo Caffe JDK 1.6.0-7 FreeBSD 7.x/i386 End-User 61M
diablo-caffe-freebsd7-i386-1.6.0_07-b02.tar.bz2

を選んでダウンロードと。
[X] I agree to the terms of this license agreement.Submit [Enter]

62591k あるそうです。結構大きいなぁ。

再びコンパイル

#cd /usr/ports/java/jdk16
#make install clean


待つこと8時間?


 :

Packing /usr/ports/java/jdk16/work/control/build/bsd-i586/j2sdk-image/jre/lib/rt.jar 47552100 bytes
Killed
gmake[3]: *** [pack-jars] Error 1
gmake[3]: Leaving directory `/usr/ports/java/jdk16/work/install/make/pack'
gmake[2]: *** [pack-sdk] Error 2
gmake[2]: Leaving directory `/usr/ports/java/jdk16/work/install/make/pack'
gmake[1]: *** [all] Error 1
gmake[1]: Leaving directory `/usr/ports/java/jdk16/work/install/make'
gmake: *** [install-build] Error 2
*** Error code 2

Stop in /usr/ports/java/jdk16.
*** Error code 1

Stop in /usr/ports/java/jdk16.


止まりました。。。
もう一回やってもまったく同じところで止まります。
何ででしょう。

ぐーぐる先生に聞いてみたら、
「resource limit killed off the pack」
リソース不足?
うん。。。確かに非力なマシンです。
どのリソースだろうと調べてみる。

#dmesg

swap_pager_getswapspace(16): failed
swap_pager_getswapspace(16): failed
swap_pager_getswapspace(16): failed
swap_pager_getswapspace(16): failed
swap_pager_getswapspace(16): failed
swap_pager_getswapspace(16): failed
swap_pager_getswapspace(16): failed
swap_pager_getswapspace(16): failed
swap_pager_getswapspace(16): failed
swap_pager_getswapspace(16): failed
swap_pager: out of swap space
swap_pager_getswapspace(16): failed
swap_pager_getswapspace(16): failed
pid 62595 (pack200), uid 0, was killed: out of swap space

あーーーーーーーーーーーーーーーーーーーーーー
これか。
スワップスペースが足りない。どーすんだ?

スワップ領域の表示
# pstat -s
Device 1K-blocks Used Avail Capacity
/dev/ad0s1b 258200 10212 247988 4%

現在256M。やっぱり少ないのか。
スワップ領域。増やせないのだろうか。
ちょっと探してみたら簡単に増やせるらしい。

Swap領域を +512Mする
#dd if=/dev/zero of=/usr/SWAPFILE bs=1m count=512

待つこと5分。

rc.confに次の行を追加
[/etc/rc.conf]
swapfile="/usr/SWAPFILE"

再起動

#reboot

# pstat -s
Device 1K-blocks Used Avail Capacity
/dev/ad0s1b 258200 0 258200 0%
/dev/md0 524288 0 524288 0%
Total 782488 0 782488 0%

増えた!

あらためて

#cd /usr/ports/java/jdk16
#make install


待つこと4時間。

#rehash


#java -version
java version "1.6.0_07"
Diablo Java(TM) SE Runtime Environment (build 1.6.0_07-b02)
Diablo Java HotSpot(TM) Client VM (build 10.0-b23, mixed mode, sharing)

できました(^o^

最後に環境変数をセットします。
[~/.profile,~/.csh,~/.zsh 自分の環境に合わせて]

export JAVA_HOME=/usr/local/diablo-jdk1.6.0
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:/usr/local/jdk1.6.0/lib/tools.jar

バージョンが変わると、名前や保存場所が変わるとおもわれますので、
いずれの環境変数も実際にそのフォルダやファイル名を確認して記述してください。


■javaの動作確認 "Hello World!"を表示させる

次に動作確認です。
javaではファイル名とクラス名を同じにしておかなければなりません。
また、それらの名前は大文字と小文字を判別することに注意してください。
テスト用のコードを記述します。
[Test.java]

class Test{
public static void main(String args[]){
System.out.println("Hello Java World.");
}
}


コンパイルと実行を行います。

#javac Test.java
#java Test
Hello Java World.


これでOKです。

もし、クラス名とファイル名が異なっていた場合や、
#java Test.class
のように拡張子まで指定した場合、次のようなエラーが発生します。

#java test
Exception in thread "main" java.lang.NoClassDefFoundError: test
Caused by: java.lang.ClassNotFoundException: test
at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:276)
at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)


クラス名とファイル名の大文字・小文字をよく確認して修正してください。


Be Careful When You Type

Type all code, commands, and file names exactly as shown. Both the compiler (javac) and launcher tool (java) are case-sensitive, so you must capitalize consistently.

HelloWorldApp != helloworldapp

The Java Tutorials



.

1 件のコメント:

匿名 さんのコメント...

sunからバイナリをダウンロードして
pkg_addで使っとります。