Groovyでハマった事 - その2
サブタイトルは「自分の恥をさらそうシリーズ」w
今回のはGroovyというよりNetBeansではまった感じです。
NetBeansにてFooScript.groovyとEmployee.gooryを下記のように作成したとします。
Employee.groovy
class Employee{ def name }
FooScript.groovy
Employee e = new Employee() e.name = "hayassh" println e.name
この状態でFooScript.groovyをShift + F6で実行した場合、
「Employeeクラスなぞ知らんぞ( ゚Д゚)ゴルァ !」
と怒られてしまいます。
最初これがなんで怒られるのか解らなくてウンウンうなってたんですよ。
「え?同一パッケージにあるのにimport文とか必要なの??」
「まさか・・・ねぇ・・・。そんなはず無いしだろうし・・・・。」
「でもGroovyは名前空間サポートしてるし・・・」
「それだったらむしろimport文いらないだろ・・・」
とかバカな事をいろいろ考えていた時期が僕にもありました
んで、ウンウンうなりながらclassファイルが作成されるディレクトリを覗いてみたわけですがそこにはEmployee.classのファイルが無いではないですか!
Employee.classファイルが存在しない、つまりEmployeeに対してパスが通ってないということですね。わかります。
NetBeansではShift + F6を実行したときは該当ファイルのみ(今回だとFooScript.groovy)プリコンパイルしてEmployee.groovyはプリコンパイルしてくれないのですね。
たしかにShift + F6は「ファイルを実行」と書いてあるから当然なのか。
というわけで1度「構築(ビルド)」をしてからShift + F6を押すことで無事期待通りの動作をしてくれました。
しかしファイルの保存時にコンパイルしてくれないんでしょうかねぇ。今は勉強中でもありちょっとしたスクリプトくらいしか書かないので問題はないですが、 Javaだと保存時にコンパイルをやってくれるので今後のNetBeansにおけるGroovyサポートの強化を期待するしかない感じですかね。それとも何か設定変えるといけるのかな??知ってる方がいたら教えてください><