JavaをバージョンアップしたらJMeterが動かなくなった

ある日、これまで問題無く動いていたJMeterがちゃんと動かなくなっていましたので、その時の対処のメモです。

 Javaを8にアップデートしたらJMeterの起動時にコンソールに↓のエラーが出ました。

Java HotSpot(TM) Client VM warning: ignoring option PermSize=64m; support was removed in 8.0
Java HotSpot(TM) Client VM warning: ignoring option MaxPermSize=64m; support was removed in 8.0

JMeter2

エラーメッセージから明らかですが、Java8から「PermSize」「MaxPermSize」のJVMパラメータが無くなっためのようです。

 また、これまでちゃんと動いていたテストシナリオもSSL関連のエラーが出るようになってしまいました。

javax.net.ssl.SSLPeerUnverifiedException: peer not authenticated

JMeter3

 結局、使っているJMeter(今回は2.9)とJava8との相性の問題で、一次的に環境変数PATHをJava7に変更して起動しなおしたら問題なく動きました。

また、JMeterの方を最新(今時点で2.13)にしてJava8で動かしても特にエラーはありませんでした。

しかし、JMeterをバージョンアップするとこれまで作ったJMeterのテスト計画を検証し直すor作り直す必要があるので、今回はJavaを一時的に7に戻しました。(;^_^A


Eclipseで後からJavaプロジェクトに変更する

すでに普通のプロジェクトとして作成してあるプロジェクトを後からJavaプロジェクトに変更する方法です。

CVSなどで単なるプロジェクトとしてチェックアウトしてしまった場合に有効です。もう一度大量のファイルをチェックアウトするのも面倒ですし。

「.project」を編集する。

変更したいプロジェクトのディレクトリ直下に「.project」というファイルがありますので、これを以下のように変更します。

<変更前>

<変更後>

 <buildCommand>と<nature>を追加します。( ・ὢ・ )

ちなみに、eclipse4.2.0で実施しました。


GsonでJavaオブジェクトをメンバ変数の定義順にJSONに変換する

JavaオブジェクトをJSONに変換するためのライブラリはいくつか種類があります。私が参加した案件ではJSONICを使用していたのですが、JSONICで変換すると、JavaオブジェクトとJSONでメンバ変数の順番が違ってしまいます。例えば↓

●JSONに変換するオブジェクト

 このようにメンバ変数の定義順ではなくアルファベット順になります。JSONなのでとくに順番に意味が無く、問題はありません。しかし、私の場合、設計書での定義順とオブジェクトのメンバ変数の定義順を合わせていたため、結果出力されるJSONだけがアルファベット順というのはなんとなく嫌だったので、メンバ変数順にできないかいろいろ試しました。結果、JSONICの代わりにGsonを使うことにしました。

 ●GsonでJavaオブジェクトをJSON文字列に変換する例

 このように、Gsonでは特に何も意識せずとも標準でオブジェクトで定義したメンバ変数の順番でJSONを出力してくれます。(o≧▽≦)ゝ

Gsonのダウンロードはこちら


日々のSE業務で得たノウハウと趣味