2010年8月28日土曜日

FXEvaluator で java.lang.NoClassDefFoundError

いろいろググってみたのだが、最初まったくわからず。

似たようなエラーでhide1080さんのブログskrbさんのブログでjavafxc.jarをクラスパス(CLASSPATH? classpass?)に通すという話から、ターミナルからコンパイルしてjavafxコマンドで実行してみたり、javafxコマンドの -classpathに javafxc.jarを(もちろんフルパスで)指定してみたが、どうもうまくいかない。同じファイルを修正してFXEvaluatorは使わずに、単純にStage{}だけに変えてjavafxコマンドから実行すると、netbeansから実行したときと同じように、ミニマムのWindowが表示されるので、FXEvaluatorを使うには何かやはり、javafxc.jar絡みで何か必要な気はするのだが。

そんな中、全く同じようなエラーに会われて解決されたページがあったので、これを参考にdesktop.propertiesファイルを修正したりもしたのだが、うまくいかない。Netbeansを再起動しただけではダメなのだろうか。ログインし直しはまだ試していない。

それで結局、ダメ元でNetBeans6.9.1に戻って、プロジェクトの「プロパティー」の「ライブラリ」から「JAR/フォルダを追加」でjavafxc.jarを指定してみると、何と、うまくいってしまった。

これは、プロジェクトのプラットフォーム(JavaFX SDK on Java 1.6(デフォルト))の「プラットフォームのクラスパス:」に表示されるjavafxc.jarと全く同じものなのだが、どうしてこれだけ個別に追加が必要なのかが分からない。さて何をどう調べれば良いだろう...。

気がついたらソースコードの先頭に書くpackage javafxapplication23の意味も忘れてしまっているので、それももう一度ちゃんと確認しないといけない。

(2010.9.28追記) ITProの桜庭さんの連載「第6回クラスを作る」にpackageに関する情報が。ナイスタイミング。ありがとうございます。
(2010.9.28追記)


だが残念なことに、すったもんだしながらも何とかFXEvaluatorを動かせたものの、自分が欲しかった使い方は出来なさそう。JavaFX ComposerやNetBeans(特にデバッガ関係)のソースが(能力的な面も含めて)読めれば、プレビューやデバッガを参考にしたいのだが、まあ、10年後を目指して。

(2010.9.28追記) JavaOneでComposerやUIコントロールがオープンソースになることが発表されたらしい。素晴らしい!!!! とはいえ、自分が理解できるかは別だが。(2010.9.28追記)

それまではとりあえず、超ヘンテコな作りで作っていくことにしよう。動けばそれなりに面白いはず。

(2010.9.28追記)もう忘れたが、この辺はreflectでやるつもりだったが、舌の根の乾かぬうちに、もっとベタで書いた方が今は好い、ということになっている。最終的には両方(ベタとreflect)使う気。(2010.9.28追記)

0 件のコメント:

コメントを投稿