2018/08/30

[Java] Google App Engine で自作のJarライブラリを読み込ませる

はじめに

eclipseで自作jarライブラリをビルドパスに登録すると問題なくコンパイルされる。
ただGAEにデプロイすると「NoClassDefFoundError」と自作jarのクラスが見つからないという例外が発生する。

その対処法を調べたのでここにまとめる。
※他にもっと効率のいい方法があると思います。

手順

  1. 自作jarファイルをGAEにデプロイするプロジェクトのフォルダの「(GAEプロジェクト)/src/main/webapp/WEB-INF/lib/」フォルダへコピー
  2. eclipseを起動し、下記のように自作jarまで開く
  3. jarを右クリック -> ビルド・パス -> ビルド・パスに追加 をクリック
  4. これでGAEへデプロイしても問題なく動作するはず







[Java] Google App Engine で「No handlers matched this URL.」が出る

開発中突然、GAEにデプロイしたアプリが @webservlet で指定したURLを認識せず、404 not found を返すようになったので、その対処法メモ。

状況

  • デプロイ時にはエラーなどは出ない
  • htmlなどの静的ファイルにはアクセスできる
  • @webservlet で指定したURLにアクセスしても「404 not found」が返り。
  • Google Stackdriver Loggingのアクセスログを見ても「No handlers matched this URL.」のみでJavaのエラーが出ているわけではない。
    • 挙動的には@webservlet で指定したURLを読み取っていないイメージ
  • 別のプロジェクトを用意し、GAEにデプロイすると問題なく動作する。
    • eclipseのプロジェクトの設定が原因?

対処法

問題が出るプロジェクトのフォルダを見ると、「src」「target」「.setting (隠しフォルダ)」の他に正常なプロジェクトには存在しない「bin」というフォルダがあった。

binフォルダを別の場所に移動したところ、上記の問題が発生しなくなった。

binフォルダが悪さをしていたのが原因

以上