都内SEのプログラミング勉強と雑記

2003年より都内でSEをしてます。業務システムをリプレイスし続けてきました。ここでは主にjavaやその周辺技術関連を紹介予定。

eclipseでAPサーバ利用時に強制終了された後、eclipseが動作しなくなった問題解決の1ケース

MacJava開発にeclipseを使っています。
こんな構成です。

Mac:Mojave 10.14
eclipse:Neon 4.6.3
WebSphere(Liberty):17.0.0.1

Liberty起動時にterminalからMavenJavaプロジェクトをビルドした後に
eclipseのウィンドウをアクティブにするとワークスペースのビルドが走りました。
ここまでは通常なのですが、体感10〜20秒ほどで突然落ちました。強制終了です。

その後再起動したのですがProgressに
「Initializing Java Tooling」「Initializing JavaScript Tooling」「InitRemoteEdit XXX」が表示されたまま
固まったように動きません。

f:id:object1985:20181105145802p:plain

関連があるのかないのか、Libertyを起動したまま強制終了しました。

ゾンビプロセスができてしまったか?と思いterminalで確認。

$ ps -ef|head -n 1;ps -ef|grep java
  UID   PID  PPID   C STIME   TTY           TIME CMD
  501 11930     1   0  9:59AM ??         4:45.30 /Library/Java/JavaVirtualMachines/jdk1.8.0_65.jdk/Contents/Home/jre/bin/java -javaagent:/usr/local/Liberty/bin/tools/ws-javaagent.jar -Djava.awt.headless=true -Xms1024m -Xmx1024m -Dwas4d.error.page=localhost:2618/354578868 -jar /usr/local/Liberty/bin/tools/ws-server.jar defaultServer_2
  501 73713 73291   0  2:40PM ttys002    0:00.00 grep -E --color=auto java
$ 

#・・・なんかいる、いや、思いっきりいる[Liberty]。
#ということで削除します。

$ kill 11930
$ 

#どうも完全停止までに数秒(5〜10秒?)かかるようです。

$ ps -ef|head -n 1;ps -ef|grep java
  UID   PID  PPID   C STIME   TTY           TIME CMD
  501 11930     1   0  9:59AM ??         4:55.28 /Library/Java/JavaVirtualMachines/jdk1.8.0_65.jdk/Contents/Home/jre/bin/java -javaagent:/usr/local/Liberty/bin/tools/ws-javaagent.jar -Djava.awt.headless=true -Xms1024m -Xmx1024m -Dwas4d.error.page=localhost:2618/354578868 -jar /usr/local/Liberty/bin/tools/ws-server.jar defaultServer_2
  501 73747 73291   0  2:41PM ttys002    0:00.01 grep -E --color=auto java
$ 

# 強制終了できないのか?と早とちりし、kill -9していますが通常不要のようです。
# 待っていれば終了するかと思います。
$ kill -9 11930
-bash: kill: (11930) - No such process
$ 
$ ps -ef|head -n 1;ps -ef|grep java
  UID   PID  PPID   C STIME   TTY           TIME CMD
  501 73781 73291   0  2:41PM ttys002    0:00.00 grep -E --color=auto java
$ 

しかしeclipseは反応せず。
こちらも再起動します。
が、Progress進行中なので終了することもできず。
こちらはアクティビティモニタから強制終了しました。

f:id:object1985:20181105145822p:plain

この後にeclipseを再起動することで正常に動作させることができました。
以前はOS再起動していたので、それよりはましか・・・

ちなみにeclipse.iniは以下の設定です。

-Xms1024m
-Xmx1536m

大本の原因はメモリ不足とかその関連かな、と思っているのですが
どのアプリも必要。予算的に解決せず。

APサーバを利用されている方はeclipseの突然の強制終了では同じ事象になるかと思い投稿します。

Chrome70で次のタブ、前のタブを切り替えるショートカットが68までと同じに戻った!

これ本当に嬉しいです。

以前タブ切り替えのショートカットが変わってしまったと投稿しましたが tonaise.hatenablog.jp

68までと同じに戻りました。

・68,70
 command + { => 前のタブ
 command + } => 次のタブ
・69
 command + ` => 前のタブ
 command + { => 次のタブ

とても快適です。

Mac-Eclipse Neon で GlassFish をインストール

Mac-Eclipse NeonGlassFish をインストール

f:id:object1985:20181015114521p:plain

GlassFish を MacEclipse で使う必要があったのでインストール時のメモです。

Eclipse GlassFish Tools インストール

Eclipse マーケットプレイスを開き「GlassFish」で検索します。
下記の手順でダイアログを進め、完了後に Eclipse を再起動します。
その間に GlassFish 本体をインストールしましょう。

f:id:object1985:20181015112927p:plain f:id:object1985:20181015112933p:plainf:id:object1985:20181015112936p:plain

GlassFish 本体 インストール

GlassFisheへ飛び、ダウンロードページから落とします。
今回は GlassFish 4.1.2 - Web Profile (57.9MB)を落としました。
適当なディレクトリに解凍しておきます。

EclipseGlassFish サーバ作成

Servers ビューから右クリック等で「New > Server」
f:id:object1985:20181015112942p:plain

GlassFish を選択
f:id:object1985:20181015112946p:plain

GlassFish locaiton に 展開した GlassFish 4 のディレクトリ内の glassfish ディレクトリを指定します。
他、全てデフォルト値で進めます。(当然変更しても OK)
サーバーを開始すると、localhost:8080 デフォルトページ、localhost:4848 管理ページが表示される
f:id:object1985:20181015112949p:plain

サーバ起動

Servers ビューで GlassFish を選択し Start で起動します。
(アプリケーションがあればサーバに追加して起動)
f:id:object1985:20181015112954p:plain

サーバ開始後は以下で起動確認ができます。

git rebase時のコンフリクトで強制的に片方のブランチ内容を取り込む方法

f:id:object1985:20181002131746p:plain
git rebase時のコンフリクトを手修正やVSCodeなどを利用して解決もいいのですが、
ときにはめんどう。

そんなときにとる方法の紹介です。

コンフリクト解消手順の一例 rebase時など 一方を採用する

以下のように、checkout --ours と checkout --theirs を使い分ければ良い。

2つのブランチ間でコンフリクトしているファイル fileA.txt と fileB.txt があるとする

# fileB.txt をマージさせたブランチ側に合わせる場合
$ git checkout --ours fileA.txt
$ git add fileA.txt    # add を忘れずに

# fileA.txt を現在チェックアウトしているブランチ側の対応に合わせる場合
$ git checkout --theirs fileB.txt
$ git add fileB.txt

$ git commit

# pushでサーバへ

個人的にoursとtheirsが逆転しがちですが、なんとか覚えます。

Chrome69から次のタブ、前のタブを切り替えるショートカットが変わってしまった

f:id:object1985:20181001145523p:plain
URLからサブドメインが消えただとか
Googleへのログインだとか
新デザインだとか、
そんなことは私にはいいのです。

MacChromeで次のタブを切り替えるときには以下のショートカットを使っていました。

command + { => 前のタブ
command + } => 次のタブ

でもこれが動かない・・・
次のタブに行きたいのにタブが移動せず、
前のタブに行こうとすると次のタブに行く・・・
Mac標準はこれじゃろがい!

なんて思ってはいけませんね。冷静に、冷静に。

どうも以下で動作するようです。

command + ` => 前のタブ
command + { => 次のタブ

やりづらい・・・

まあ、Google Chromeヘルプでは以下でアナウンスされているので、仕方ないですよね・・・

command + option + 右矢印
command + option + 左矢印

Eclipseでstatic importをちょっと簡単に行う方法(ショートカット)

Javaコーディング時にstatic importしたいパッケージが
save actionでインポートの編成を行っていると
「ちょっとだけ手間だな」と思うことがありました。
そんなときはこちら。

該当のメソッドにカーソルを当ててCmd + shift + m

windowsなら「Ctrl + shift + m」ですね。
eclipseで確認すると Create import statement on selection 機能のようです。

f:id:object1985:20180824145512p:plain

  • これが
    f:id:object1985:20180824145530p:plain

  • こうなる
    f:id:object1985:20180824145550p:plain

これは知らなかった・・・便利!
ただ、修正できるのはカーソル箇所のみなので一括変更はなさそう。
(それでも大分助かります)

何をしてもIBM WAS Libertyでインジェクション(injection)されない際の対応

Libertyサーバをeclipse経由で利用しているのですが、
ヒープサイズを調整している際にメモリ不足で異常終了しました。

その際に強制終了したのが起因か何なのか
以降のJavaアプリケーション内で「@inject」しているオブジェクトインスタンスへのset対象がnullになる事象がありました。

以降はサーバを再起動してもeclipseを再起動してもMacOSを再起動してもだめで、
これが正しい復帰手順か不明ですが

該当のブラウザ(今回はMac Firefox)を起動。
「設定 > プライバシーとセキュリティ > Cookie とサイトデータ」の
「データを消去」
再度アプリケーションにアクセス。

この手順で復帰できましたが理由が不明。。。
ちなみに該当のアプリケーションはJSFで画面を持ちますが
DB接続だとか外部WebサービスJAX-RSで接続だとかそういうのはありませんでした。

ちなみにhttp://localhost/〜で接続利用しており、
http://192.168..x.x/〜のIPアクセスなら消去前でも正常に稼働しました。

follow us in feedly