NetBeans + GlassFishな環境でいろいろハマッたのでメモ

今までJavaの開発環境はEclipse一本だったので、NetBeansは触ってこなかった私ですが
先日までやってた(まだ終わってないが)仕事がNetBeans7.3 + GlassFish3.1だったので、慣れない環境でしたがなんとか頑張ってたのでした。

で、

まず動かすまでに色々ハマり、一度動いてからも色々ハマったのでメモ。

NetBeans7.3が起動しない

まずそもそもNetBeans7.3が起動しなくて、なんでさ?と思ったら
7.3はJAVA8では起動出来ないらしい。なんでさ。
(NetBeansのインストールパス)/etc/netbeans.conf
を開いて、
netbeans_jdkhome
にJDK7のパスを設定すれば起動する。

GlassFishへデプロイできない。できてもなんか動かない。例外を吐く。

・ソースのパスに日本語(マルチバイト文字)が入ってると駄目らしい。
ので、下記手順に沿ってソースパスを変更する。
1.コマンドラインで下記を実行
>(glassfishインストールパス)/glassfish/bin/startserv.bat domain1
domain1は実際に使用しているドメインフォルダで。

2.NetBeans起動。サービスタブのサーバーでGlasFish展開
→アプリケーション内のプロジェクトをすべてアンデプロイする。
 例外が出ても構わない。
 アプリケーションが空の状態でGlashFishを実行して起動成功すればOK。
 NetBeansを一旦終了する。

3.全角の混ざらないパスにプロジェクトフォルダをまるごと移動する。
4.NetBeansを起動して移動後のプロジェクトを読み込む。
5.プロジェクトをビルドして自動でGlassFishが起動し、デプロイされればOK。

JavaDBが起動時にエラーを吐く

→セキュリティ的なエラーの場合
 permission java.net.SocketPermission “localhost:1527”
 的なエラーならば、JDKのバージョンを確認。
 →1.7.0_51以上の場合に発生するので、51未満のバージョンにする。
この問題はNetBeansとかJavaDBに限らず、Win8以降?でよく見るね。
 
別の方法
  →うまくいかなかったけど、参考資料として。
 Java\(JAVAのバージョン)\jre\lib\security\java.policyに下記を追加
grant codeBase “file:C:/Program Files/Java/jdk1.7.0_51/db/lib/*” {
permission java.net.SocketPermission “localhost:1527”, “listen,resolve”;
};
  C:/Program Files/Java/jdk1.7.0_51の部分は実際のパスに合わせる。

実行しても動かない

→出力タブのGlassFish Serverのログに
java.lang.OutOfMemoryError: PermGen space
と出ていたら割当メモリが足らないので増やしてあげる。
(GlassFishインストールフォルダ)/GlassFish/domains\domain1\config\domain.xml
の中の
-XX:MaxPermSize=???
の???の部分を256mとかにしてあげる。

→出力タブのGlassFish Serverのログに
java.lang.OutOfMemoryError: GC Overhead limit exceeded
と出たら、ヒープメモリ割り当てが足らないので増やしてあげる。
上記ファイルの
-Xmx???
の???の部分を1024mとかにしてあげる。デフォルトだと512m?

ビルドに失敗する

ソースに問題は無いはずなのにビルドに失敗する場合、
jarを一旦削除してからビルドを試してみる。
それでも駄目ならdestフォルダごと削除してみる。


なんつーか、NetBeansが思いっていうか、ビルド遅くね?デプロイもかなり時間かかる。Eclipseだったらここまで時間掛からんと思うんじゃが。
つかGlashFish重すぎね?動作じゃなくてメモリ食い過ぎじゃね?
まー、Eclipseも起動が重かったり動作がもっさりすることがあったりで、一長一短って感じなのかも。
Eclipseだとプラグイン入れて設定ごちゃごちゃしなきゃいけないところが、NetBeansだと最初から色々入っててそのまま使えるところは初心者向けなのかもな、と思いました。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

認証のために問題を解いて下さい * Time limit is exhausted. Please reload CAPTCHA.