Play Framework のコンパイルエラー解決備忘録!compile:copyResources java.util.zip.ZipException: Not in GZIP format


play_framework_180110_01

Play Framework で開発して、いざコンパイル! そしたら以下のエラー。

(Java) [error] (compile:copyResources) Error wrapping InputStream in GZIPInputStream: java.util.zip.ZipException: Not in GZIP format

ソースに関係ないことも多く、sbt設定変更 や playコマンド実行後 に起こりやすい。
本当に稀に起こり対策も忘れがちなので備忘録です。

対策

play framework のディレクトリ構成は、バージョンや構成設定で多少変わりますが 大体以下のような感じ。
Anatomy - 2.4.x - Play Framework リファレンス参照

target ディレクトリがありますが、この中身を削除するだけ!

target/ ディレクトリには、Play のビルドシステムによって生成されたファイルがあります。
全部削除しても、再ビルドすれば生成されるので問題ありません。
これで直るってことは一部のファイルの再コンパイルで不整合が起こったのかな。
とりあえず不整合が起こるなら全削除・全作成!単純です。

app                      → アプリケーションソース
 └ assets               → コンパイルされたアセットソース
    └ stylesheets       → 通常は LESS CSS ソース
    └ javascripts       → 通常は CoffeeScript ソース
 └ controllers          → アプリケーションコントローラ
 └ models               → アプリケーションビジネス層
 └ views                → テンプレート
build.sbt                → アプリケーションビルドスクリプト
conf                     → 設定等コンパイルされないリソース
 └ application.conf     → メイン設定ファイル
 └ routes               → ルート定義
dist                     → プロジェクト成果物に含める任意のファイル
public                   → 公開アセット
 └ stylesheets          → CSS ファイル
 └ javascripts          → Javascript ファイル
 └ images               → 画像ファイル
project                  → sbt 設定ファイル群
 └ build.properties     → sbt プロジェクトの目印
 └ plugins.sbt          → Play 自身の定義を含む sbt プラグイン
lib                      → 管理されていない依存ライブラリ
logs                     → ログフォルダ
 └ application.log      → デフォルトログファイル
target                   → 生成物
 └ resolution-cache     → 依存性に関する情報
 └ scala-2.10
    └ api               → 生成された API ドキュメント
    └ classes           → コンパイルされたクラスファイル
    └ routes            → routes から生成されたソース
    └ twirl             → テンプレートから生成されたソース
 └ universal            → アプリケーションパッケーs時
 └ web                  → コンパイルされた web アセット
test                     → 単体、および機能テスト用のソースフォルダ

実践

play framework のディレクトリ構成は バージョンや構成設定で違うため、今回は targetディレクトリが2つありました。targetディレクトリがコンパイル生成物用なら全部削除しちゃいましょう!

cd ${your_project}
rm -rf target
rm -rf project/target

コマンド使って削除するもよし GUI使ってゴミ箱に入れてもよし 結果的にtargetディレクトリ内が空になればOK!
空になったら再コンパイルで、私は大体解決しました。

以上


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です