AWS Lambda で NoClassDefFoundError
やろうとしたこと
AWS Lambda に jar をアップロードして実行したかった。
問題
jarを作成してAWSのコンソールにアップロードして実行すると、ローカルで作成した自作のモジュールのクラスが NoClassDefFoundError
。
環境
IntelliJ IDEA 2018.2.6 (Community Edition)
macOS 10.14.2
gradle-4.8-all
kotlin 1.2.71
やったこと
AWS ドキュメント - .zip デプロイパッケージの作成 (Java) や
を参考に、以下のようなタスクを定義して ./gradlew :app:build
。
task buildZip(type: Zip) { from compileJava from compileKotlin from processResources into('lib') { from configurations.runtime from configurations.compileClasspath } } build.dependsOn buildZip
これでうまくいくはずだけど、AWSコンソールから実行すると NoClassDefFoundError
と言われる。
jarをunzipしてlibを覗いてみると…
ローカルの自作モジュールがjarになってない!
原因
ローカルの自作モジュールに java-library
プラグインを入れていたこと。
plugins { ... id 'java-library' // ←これ }
とりあえずこれを消したらちゃんとjarを作ってくれてうまく実行できました。
AWS Lambda実践ガイド (impress top gear)
- 作者: 大澤文孝
- 出版社/メーカー: インプレス
- 発売日: 2017/10/16
- メディア: 単行本(ソフトカバー)
- この商品を含むブログを見る