[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[netbsd,09552] sun-jdk6 could not work



kayです。

  ちょっと java で遊んでみようかと思いまして amd64 で 
/usr/pkgsrc/lang/sun-jdk6 をインストールしてみたんですが、実行すると以
下のようになってしまいます。

kay@gaia[612] sun6-java -v
Error: could not find libjava.so
Error: could not find Java 2 Runtime Environment.
kay@gaia[613] 

  動作環境は以下の通り

kay@gaia[613] uname -a
NetBSD gaia.kaynet.or.jp 4.99.63 NetBSD 4.99.63 (GAIA) #0: Thu May 29 00:28:32 JST 2008  root@xxxxxxxxxxxxxxxxx:/usr/src/obj.x86_64/sys/arch/amd64/compile/GAIA amd64
kay@gaia[614]

  LD_LIBRARY_PATH がおかしいのかと思いましたが、色々いじっても動いてく
れません。

  仕方なく ktrace をとってみると最後の方は以下のようになっていました。
どうやら実行ファイルのパスを基準に libjava.so を探しているっぽい感じで
す。

 13116      1 java     RET   brk 134557696/0x8053000
 13116      1 java     CALL  brk(0x8074000)
 13116      1 java     RET   brk 134692864/0x8074000
 13116      1 java     CALL  netbsd32_readlink(0x8050eb1,0xffffb870,0xfff)
 13116      1 java     NAMI  "/emul/linux32/proc/self/exe"
 13116      1 java     RET   netbsd32_readlink 1
 13116      1 java     CALL  netbsd32_write(2,0x80511c0,0x21)
 13116      1 java     GIO   fd 2 wrote 33 bytes
       "Error: could not find libjava.so\n"
 13116      1 java     RET   netbsd32_write 33/0x21
 13116      1 java     CALL  netbsd32_write(2,0x8051140,0x32)
 13116      1 java     GIO   fd 2 wrote 50 bytes
       "Error: could not find Java 2 Runtime Environment.\n"
 13116      1 java     RET   netbsd32_write 50/0x32
 13116      1 java     CALL  exit_group(2)

  そこでちょっと試してみました。NetBSD のネイティブバイナリでは以下の
ようになります。

kay@gaia[614] ls -l /proc/self/exe
lr-xr-xr-x  1 root  wheel  7 May 30 22:12 /proc/self/exe -> /bin/ls
kay@gaia[615] 

  正常に動いているようです。次に linux のバイナリの場合。

kay@gaia[615] /emul/linux32/bin/ls -l /proc/self/exe
lr-xr-xr-x  1 root wheel 1 2008-05-30 22:12 /proc/self/exe -> /
kay@gaia[616] /emul/linux32/bin/ls -l /emul/linux32/proc/self/exe
lr-xr-xr-x  1 root wheel 1 2008-05-30 22:12 /emul/linux32/proc/self/exe -> /
kay@gaia[617] ls -l /emul/linux32/proc/self/exe
lr-xr-xr-x  1 root  wheel  7 May 30 22:13 /emul/linux32/proc/self/exe -> /bin/ls
kay@gaia[618]

  というわけで /proc/self/exe が linux エミュレーションの場合に正常に
動作しないようで、そのせいで sun-jdk6 が正しく動かないようです。

  ちなみに i386 でも、以下のように駄目のようです。

kay@athlon64[514] uname -a
NetBSD athlon64.kaynet.or.jp 4.99.63 NetBSD 4.99.63 (ATHLON64) #0: Mon May 19 01:37:37 JST 2008  root@xxxxxxxxxxxxxxxxxxxxx:/usr/src/obj.i386/sys/arch/i386/compile/ATHLON64 i386
kay@athlon64[516] ls -l /proc/self/exe
lr-xr-xr-x  1 root  wheel  7 May 30 22:25 /proc/self/exe -> /bin/ls
kay@athlon64[517] /emul/linux/bin/ls -l /proc/self/exe
lr-xr-xr-x  1 root wheel 1 2008-05-30 22:25 /proc/self/exe -> /
kay@athlon64[518] /emul/linux/bin/ls -l /emul/linux/proc/self/exe
lr-xr-xr-x  1 root wheel 1 2008-05-30 22:25 /emul/linux/proc/self/exe -> /
kay@athlon64[519]

  だれか、こうなっている理由わかる人はいないでしょうか?