NetBeans本体の挙動を知るためにデバッガで動かそうとしたのですが、少々ハマったのでここにメモっておきます。(追加設定については末尾参照)
用意するもの
- Mercurial
- JDK8
- ant
- NetBeans
作業のアウトラインは以下のページを参照してください。
http://wiki.netbeans.org/WorkingWithNetBeansSources
ソースの取得
スナップショットをzipで取得できそうな記述をどっかで見かけたのですが、見当たらないのであきらめてMercurialで取得します。リポジトリは前述のページを参照。
取得後のディスク使用量は4.4GB、当方の環境だと3時間くらいかかってます。
ビルドの実行
いきなりNetBeansでプロジェクトを開くとライブラリ不足等でコケるので、事前にビルドして必要なライブラリを取得しておきます。ビルドはトップレベルでant
コマンドを実行するだけです。
ビルド時間はMacBook Air Mid2013(Core i7 1.7GHz + 8GB RAM + 256GB SSD)で
約15分+ライブラリダウンロード時間。(初回ビルド時の時間は計測してませんでした。1時間くらい見ておけば大丈夫?)
ビルド後のディスク使用量は6.0GB。
NetBeansへのプロジェクトの読み込み
リポジトリ内のプロジェクト数が1000を超える(!!)ので、うっかり全プロジェクトを読み込もうとするといつまでたっても終わりません。(←一度やらかした)
ターゲットのプロジェクトだけ開けば、「必須プロジェクトを開く」にチェックが入っていると(デフォルトON)、関連プロジェクトも一緒に開いてくれます。
Netbeansのデバッガで動かす
プロジェクトを読み込んだら、そのままNetBeansの「デバッグ」ボタン、もしくは「実行」ボタンを押せば、プロジェクト設定で仕込まれてるのか、開発版のNetBeansが起動します。
あとは普通のアプリと同様ブレークポイント等も使えます。ログは「出力」ウィンドウに出ます。追加の情報出力を埋め込みたければ、たいていのクラスにはLOG定数(Java標準logger)が定義されているのでこれを使えばよいでしょう。
おまけ
解析の結果、Mac OS Xでは、NetBeansの設定ファイルに以下の設定(JVMのプロパティnetbeans.editor.keymap.compatible
をtrue
にする)を行うことで、option(alt)キーにショートカットを設定したときには特殊文字入力が無効になることがわかりました。
> diff -U0 "/Applications/NetBeans/NetBeans 8.1.app/Contents/Resources/NetBeans/etc/netbeans.conf"{.orig,}
--- /Applications/NetBeans/NetBeans 8.1.app/Contents/Resources/NetBeans/etc/netbeans.conf.orig 2015-12-19 10:21:02.000000000 +0900
+++ /Applications/NetBeans/NetBeans 8.1.app/Contents/Resources/NetBeans/etc/netbeans.conf 2015-12-20 16:58:06.000000000 +0900
@@ -46 +46 @@
-netbeans_default_options="-J-client -J-Xss2m -J-Xms32m -J-Dapple.laf.useScreenMenuBar=true -J-Dapple.awt.graphics.UseQuartz=true -J-Dsun.java2d.noddraw=true -J-Dsun.java2d.dpiaware=true -J-Dsun.zip.disableMemoryMapping=true"
+netbeans_default_options="-J-client -J-Xss2m -J-Xms32m -J-Dapple.laf.useScreenMenuBar=true -J-Dapple.awt.graphics.UseQuartz=true -J-Dsun.java2d.noddraw=true -J-Dsun.java2d.dpiaware=true -J-Dsun.zip.disableMemoryMapping=true -J-Dnetbeans.editor.keymap.compatible=true"