2019年9月27日金曜日

persistence.xmlの改行コードにCRが一個紛れ込んだせいで1時間悩む

現在、電力会社のシステム開発をしています。

Java、websocket、jpa、glassfish、postgresという環境です。

本日テスト環境にソースをデプロイしたところエラーが発生しました。
503 model cast error
こんな感じのメッセージが出ました。

ローカル環境では問題なく動いていました。

サーバーにはwarという形式に圧縮してデプロイするので怪しいのはwarにする工程かと思いました。

プロジェクトをクリーンしたりeclipseを再起動してwarを出しなおしたりしましたが改善しませんでした。

結論は記事タイトルにもある通りpersistence.xmlというorマッピングの定義ファイルに改行コードCR(キャリッジリターン)が紛れ込んでいたことでした。

そのファイルには改行コードはLF(ラインフィード)しか使われていなかったのですがwindows環境では改行コードはどれでも問題なく動くのですが、テスト環境ではOSが違うようで、改行コードが原因でモデルとの関連付けができなくてエラーとなっていたようです。

前にこれに似たケースで大文字と小文字が原因でローカルでは動き、テスト環境のlinuxでは動かないというバグを出したことがあります。

今回はこの不具合で1時間ほどはまり、有識者に発見してもらいました。
自力で解消しようとしたら下手したら3日くらいかかってたかもしれません。

改行コード、ファイルの文字コード、半角スペース、全角スペース、大文字、小文字
ここらへんは要注意ですね。

多分初心者が独学でプログラミングを学習しようというのは無謀で、こういう不具合の自力解決はほとんど不可能だと思います。









0 件のコメント: