endless pulse

どっくんどっくんふるえる毎日を過ごしています

Netbeans6.9でScala for Mac

前回の記事(Scalaのインストールとかpluginとか(Mac OS X 10.6) - magicpulse)の続きになるかも。
EmacsScala-modeでかりかり書いてたのだけど、少しずつ大きなコードになってきたからNetbeans使おうと思ったらいろいろ問題が出たのでメモ。

実行環境

実行…できない?

Netbeansを起動させて、とりあえずScalaプロジェクトを作って動かしてみると、いきなり意味不明のエラーが。

You must set SCALA_HOME or environment property and append "-J-Dscala.home=scalahomepath" property to the end of "netbeans_default_options" in NetBeansInstallationPath/etc/netbeans.conf to point to Scala installation directory.

環境変数にパス通せってことかな?


Scala plugins for Netbeans6.9Wikiを見に行ってみると

のどちらかをやればいいようです。

SCALA_HOMEを設定してみた

が、環境変数の設定の仕方が本当に意味不明なことが書いてあって私にはまったくよくわからない。

  • ~/.Mac_OS_X/environment.plist というファイルを作って(フォルダがない場合は作る)以下のように書く。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>SCALA_HOME</key>
	<string>full/path/of/your/scala/home</string>
	<key>PATH</key>
	<string>/opt/local/bin:/opt/local/sbin:/bin:/sbin:/usr/bin:/usr/sbin:/full/path/of/your/scala/home/bin</string>
</dict>
</plist>

ええ、と思いながらもやってみました。


だが同じエラーが出るorz
やり方が合ってないのか? 申し訳ないです、全然よくわかりません。いつもの方法(.bashrcとか.bash_profileとか)で環境変数を設定してみてもダメ。。。echoしたら出てたんだけどな。bashとは関係ないっていうこと? 私がおそらく環境変数の何たるかをちゃんと理解してないのでしょうが。うーん。

netbeans.confをいじる

そんなわけでOrの後をやることに。

netbeansInstall/etc/..ってあるけどそれどこよ?

私の場合は/Applications/NetBeans/NetBeans 6.9.1.app/Contents/Resources/NetBeans/etcでした。

落とし穴

netbeans.confの最後って書いてあるように見えるのだけどね、原文の英語は。最後に追加しても何も起きませんでした。

このブログのScalaのところに書いてあることに非常に助けられた。

  • すでにnetbeans.confの中にある変数netbeans_default_optionsの中身の最後に"-J-Dscala.home=/path/to/scala/home"を設定するらしい。
    • netbeans_default_options="〜〜〜"ってすでに文字列がいっぱい入ってる。(netbeans.confの真ん中ぐらいにあった)
    • そこの最後に付け足すだけ。

そんなわけでやってみたら……おお、さっきのエラーは出なくなった!

SCALA_HOMEの場所

が、また違うエラーが出ました私の場合。(ほとんどの人は上記の設定でいいはず)

[taskdef] Could not load definitions from resource scala/tools/ant/antlib.xml. It could not be found.
/scalala/scalala-read-only/scalala/build.xml:36: Problem: failed to create task or type scalac 

Cause: The name is undefined.
Action: Check the spelling.
Action: Check that any custom tasks/types have been declared.
Action: Check that any / declarations have taken place.

scalacが見つからない???


SCALA_HOMEの場所が違っていたようです…


私は上記SCALA_HOME(もしくはnetbeans.confのscala/home)を設定するときに、コマンドのscalaがある場所を指定していました。私の場合はMacportsでいれたのでつまり

/opt/local/bin/scala

とか書いていたのだけど、これが間違いで、buildするときのxml読んでたら、SCALA_HOMEの下のフォルダのlib/scala-compiler.jarとか呼んでる…。思わずlocate scala-compilerとかしたら、私の場合は

/opt/local/share/scala-2.8/lib/scala-compiler.jar

に存在していました。なので、正しいSCALA_HOMEは

/opt/local/share/scala-2.8


これで無事に動いた!