先日Quicktime for Java 7.0が出てないみたいな話をしたが、実は出てました。すいません。標準で付属するようになったためインストール時に指定する必要がなくなっただけでした。
せっかくでたてたということなのでアップデートして、試してみた・・・、が動かない。
とりあえず色々四苦八苦して試してみたら以下のようなことがわかってきた。
逆に次の場合は上手くいく
現状でわかったのはこれだけ。とりあえず解決策としてはコマンドラインから実行すればよいが、なぜeclipse上での実行時にはクラスローダーの挙動がおかしいのかがよくわからない。
原因としては
なんかが考えられる。
どうやらeclipseの仕組みを知らないとわからないわけだ。
どなたかeclipseに詳しい人がいたら教えてください。
追伸
家で同じことを試したらeclipse上でも問題なく動きましたorz。
どうやら学校の環境設定になんらかの問題があるらしい。
追伸2
原因判明、環境変数で指定したクラスパスが古いjarファイルを指していたこと。確か古いバージョンではjre/lib/extの下にjarをおいて環境変数で指定することになっていたのだ。eclipseではどうやら明示的に指定したライブラリより先に、環境変数クラスパスで指定されたライブラリを読み込むらしい。こんなくだらない理由で7時間・・・。
せっかくでたてたということなのでアップデートして、試してみた・・・、が動かない。
とりあえず色々四苦八苦して試してみたら以下のようなことがわかってきた。
- 前バージョンではWINDOWSSYSYTEM32にぶちこまれていたDLLが7.0ではProgram Filesの下におかれている(そのためライブラリパスの指定が必要)。
- eclipse上で実行した際、次の場合はClassLoaderがライブラリを発見できない。
- JVMのパラメータでライブラリパスを与えた場合(-Djava.library.path = "...")
- b. 環境変数のPATHにライブラリパスを設定した場合
- カレントディレクトリにDLLをぶち込んだとき
逆に次の場合は上手くいく
- jreのbinディレクトリにDLLをぶち込んだとき
- コマンドラインから実行したときはa~dの全ての場合で上手くいく。
現状でわかったのはこれだけ。とりあえず解決策としてはコマンドラインから実行すればよいが、なぜeclipse上での実行時にはクラスローダーの挙動がおかしいのかがよくわからない。
原因としては
- eclipse上での実行時になにか特別なパラメータが与えられている
- eclipse上ではClassLoaderの挙動がコマンドラインの場合と違う
なんかが考えられる。
どうやらeclipseの仕組みを知らないとわからないわけだ。
どなたかeclipseに詳しい人がいたら教えてください。
追伸
家で同じことを試したらeclipse上でも問題なく動きましたorz。
どうやら学校の環境設定になんらかの問題があるらしい。
追伸2
原因判明、環境変数で指定したクラスパスが古いjarファイルを指していたこと。確か古いバージョンではjre/lib/extの下にjarをおいて環境変数で指定することになっていたのだ。eclipseではどうやら明示的に指定したライブラリより先に、環境変数クラスパスで指定されたライブラリを読み込むらしい。こんなくだらない理由で7時間・・・。