NetBeans の JavaFX プラグイン、エンコーディング指定の問題は 1.1 で直りましたが、日本語を含む時にパースに失敗するという以下の問題はまだ直っていません。前回「NetBeans が使うエンコーディングを UTF-8 にしたら動いたかも」と思いっきり誤報してしまいました、スイマセンでした。
  • 156117: I18N : parsing JavaFX codes with Japanese characters fails
netbeans javafx plugin

週末時間があったのでデバッグしてみました。実は前にもチャレンジしたことがあったのですが、その時はどうしてもわからなかったんですよね >< でも今回は試験的なパッチを作るところまでできました!

org.antlr.runtime.ANTLRReaderStream の load() でデータを読み込んでいるのですが、ここで ASCII 文字以外は壊れてしまっていました。実際に読み込んでいるのはプラグイン側の LexerInputStream というクラスですが、java.io.InputStream を使っているのに実装している read() は、バイトではなく、文字そのものを返してしまっています。これが問題ではないかと... ここを正しくバイトを返すようにしたらちゃんと動くようになりました。パッチをバグレポートに添付すると早速担当エンジニアが直してくれてチェックインしてくれました。わーい!これでプラグインの次のアップデートには入っていくことなりそうです。

私の環境でビルドした jar ファイルを公開しておきますね。最新の NetBeans 6.5 のプラグインで確認しています。興味のある方は是非使ってみてください。おかしな動作があればすぐに知らせてください! 更新部分は org-netbeans-modules-javafx-lexer.jar の一つです。
  • <NetBeans インストールディレクトリ>/javafx2/modules/org-netbeans-modules-javafx-lexer.jar
のものと置き換えて再起動してください。この jar ファイルは NetBeans ディレクトリが書き込みできない場合は、ユーザーディレクトリにあるかもしれませんので、ファイル名で検索してみてください。

注 : あくまで個人的にビルドしたものなので自己責任でお願いします。
Comments:

おぉ、すばらしいぃぃぃ
さっそく、使わせていただきます。
それにしてもそんな簡単なバグだったんですね。やっぱり、向こうの人はマルチバイトな文字に対して無頓着なんでしょうか?

Posted by さくらば on March 10, 2009 at 10:20 AM JST #

さくらばさん、よろしくお願いします。

いや〜この問題はどうでしょうね、antlr は外部のライブラリなのですが通常はファイルを読み込んで使うのが一般的なようです。javafxc でも使われているようですね。NetBeans プラグインの場合はすでにファイルをエディタに読み込んだあとのデータをオンメモリでそのまま渡しているので何にも考えなかったようです。InputStream の read() は私もドキュメントをちゃんと読むまで気がつきませんでした ^^;)

Posted by 片貝 on March 10, 2009 at 11:36 AM JST #

片貝さん、ありがとうございました!
これでやっと、日本語も不自由なくつかえるようになりますね!

tkenji

Posted by 61.206.233.141 on March 11, 2009 at 01:23 AM JST #

Post a Comment:
Comments are closed for this entry.

This blog copyright 2009 by katakai