ホームページ目次前の話次の話

UbuntuでJava3Dを使おうと思って一苦労

2009年2月5日

今日は久々にコンピュータにソフトウェアをインストールする気分になれた。 というのは、最近はUbuntu(Linux)を使っているため、 マウスでつんつんする程度でソフトがインストールできてしまって、 なんだかコンピュータを触っている気がしない。 確かにUbuntuは楽だが、このままでは楽過ぎて頭が腐るのではないかと懸念していた。

それが、今日、どうしてもJava3Dを自分のノートパソコンで動かさねばならなくなった。 そのまえに、WindowsにJava3Dを入れるのはやって、一応Java3Dのアプリの動作確認は してあったのだが、古いノートパソコンとともに、Windowsは使わなくなってしまったので、 さて、どうやったら動くのか考えてみた。

まず、何も考えずにUbuntuのアップデートで対応できないかと思ってあれこれ挑戦しようと思ったが、 さっぱりわからない。 それで、ネットで調べたら、それではダメらしきことが書いてあって、 ネットから取ってきて、あれこれ設定しなくてはならないような怖いことが書いてあった。

やはりJavaのインストールは面倒なのだと思ったが、ここはやるしかないので、 1秒ほど考え込んだのちに、作業を始めた。

まず、Java3D対応しないまま、どんなエラーが出るか調べてみた。 Java3Dを使っているページをブラウザで表示し、エラーになったところで、 Javaコンソールを開いてみると、次のエラーが出ていた。

java.lang.NoClassDefFoundError: javax/media/j3d/Canvas3D at java.lang.Class.getDeclaredConstructors0(Native Method) at java.lang.Class.privateGetDeclaredConstructors(Class.java:2389)

j3d/Canvas3D がないと怒られているが、入れていないのだから当然だ。 では、入れてやるか、しかたがない。

ということで、Google使って、Java3Dがどこに転がっているか調べた。

https://java3d.dev.java.net/binary-builds.html

このページに行くと、Java 3D 1.5.2 が最新版のようだったので、それを入れることにした。 ダウンロードしたファイルは、j3d-1_5_2-linux-i586.bin である。 zipもあるので、気に入った方を落とせば良いだろう。

binだから実行すると何か起きるだろう。ここでは、次の様にしてみた。

$ sh ./j3d-1_5_2-linux-i586.bin
すると、ライセンス条項らしきものが英語で延々とでてきて、面倒なので飛ばして、
Do you agree to the above license terms? [yes or no]
に対して yes を入れてしまった。yesはやたらに入力してはいけない。

すると、次のような lib ディレクトリができていた。

$ tree lib
lib
|-- ext
|   |-- j3dcore.jar
|   |-- j3dutils.jar
|   `-- vecmath.jar
`-- i386
    |-- libj3dcore-ogl-cg.so
    `-- libj3dcore-ogl.so

2 directories, 5 files

このファイルをどこかに置けばきっと動くはずである。 という勝手な思い込みで、これまたGoogleで調べたが、 ネット上に書かれていることはどうも自分のディレクトリ構造と微妙に違う。 ええい、こうなれば、実験だ。

ということで、集めた情報と、自分のファイルシステム内を比較して、 以下の場所にjarファイルを突っ込んでみた。

$ sudo cp -p lib/ext/*.jar /usr/lib/jvm/java-6-sun/jre/lib/ext

ここで、再度、FirefoxでJava3Dを使ったアプレットの表示を試みたら、やはりダメであった。 しかし、前とはちょっとだけ様子が違った。 これだけでは分からないので、Javaコンソールを覗いてみた。

java.lang.UnsatisfiedLinkError: no j3dcore-ogl in java.library.path at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1682) at java.lang.Runtime.loadLibrary0(Runtime.java:823)

最初のエラーとは違うメッセージだ。今度は、j3dcore-oglなんてのが見える。 これは、ダウンロードした中に含まれたlibj3dcore-ogl.soが関係しているのだろう。 これは、まだ入れていない。

前と同様に、今度はライブラリを突っ込んでみた。

$ sudo cp -p lib/i386/*.so /usr/lib/jvm/java-6-sun/jre/lib/i386

そして、もう一度、Firefoxを動かしたら、動いた。 Java3Dのサンプルはネット上にいっぱい転がっているかと思ったら、 古過ぎてトラブルが起きてしまうのが大部分だったが、 CodeZineの「3Dモデルを表示するJavaアプレットの作成」の中の 完成版アプレットを見るで、さまざまな3次元形状を表示できる。

今日は、めずらしく、ソフトウェアのことを書いてしまった。

ナンプレ問題
自動生成


これで、今日から
貴方もパズル作家


稲葉のパズル研究室

Cパズル
プログラミング
〜再帰編〜


ホームページ目次前の話次の話