続・IzPackインストーラのバグ回避について
scalaコマンドで「スクリプト形式」が動かない?
本書の巻末にも、「IzPack」で自動でやってくれるはずの「環境変数の設定」が失敗するバグについて紹介してあります。
加えて、Windowsの64bit(のJavaの64bit)版でも、インストールの途中でエラーになるようです。
症状は以下の通りです。インストーラ画面に
ERROR You have not installed the DLL named 'ICE_JNIRegistry.DLL'. C:\scala\Uninstaller\ICE_JNIRegistry.dll: .............というようなメッセージが表示され、先に進めなくなります。
これは、あまり問題ありません。実は、「アンインストーラをインストールできない」という、なんかフザケてんじゃないかという印象を受けてしまいますが、そういうエラーなのです。
Scala自体はちゃんとインストールされています。ただし、Scalaのインストールフォルダ及び実行フォルダのパスが環境変数に自動設定されないうちに、インストーラを強制終了してしまうことになります。ですから、この作業を自分でする必要があります。
Windowsにおける環境変数の設定方法は、本書巻末にも説明してありますが、筆者の別のサポートページにも書いてありますのでお役立てください。
設定する環境変数は以下の通りです。
scala nantoka.scalaこんなエラーが出て実行できないことはありませんか。
Connection Resetこれは、「ファイアーウォール」か、あるいは他の「サービス」と「ポートが競合」しているかが原因のようです。
「スクリプト形式」は、書かれたファイルの内容をそのたびに読んで、コンパイルして実行します。それは遅いので、最近のScalaでは「コンパイルデーモン」というサービスが常駐しており、言うなれば「一度立ち上がったコンパイラはそのまま立ち上がりっぱなし」の状態になっているのです。「スクリプト形式」の実行では、このサービスに接続して処理をしてもらうのですが、これになんらかの接続障害が起きているのです。Mac OS Xでファイアーウォールの問題が報告されています。
とりあえず、scalaコマンドで「スクリプト形式」の実行を行う場合に以下のようなコマンドオプションを使うと、このエラーは回避できます。
scalac -nocompdaemon nantoka.scalaなお、scalacコマンドでコンパイルしたクラスをscalaコマンドで実行する場合は、このエラーは起こらないと思います。