はまったところ

自分が書いたコードじゃないですが、はまったところを。

byte[] bytes = "ほげ".getBytes();

JavaDocにも書いてますが、StringのgetBytes()はプラットフォームのデフォルトエンコーディングとしてバイト配列を作る、というもです。
上記のコードだと、Windowsでは動くのにLinuxだとバグになる、というパターンになりやすいです。
それぞれデフォルトエンコーディングが違うからですね。
なので、エンコーディング指定するのが望ましいです。

byte[] bytes = "ほげ".getBytes("UTF-8");