2017-01-02 21 views
0

javaの.jarファイルをアップロードして実行すると、警告とエラーが表示されます。AWSラムダJAVA:外部ライブラリの使用

This function contains external libraries. Uploading a new file will override these libraries. 

し、エラーがある: 警告がある

java.lang.NoClassDefFoundError: org/apache/http/client/methods/HttpUriRequest 
at java.lang.Class.forName0(Native Method) 
at java.lang.Class.forName(Class.java:348) 
Caused by: java.lang.ClassNotFoundException: org.apache.http.client.methods.HttpUriRequest 
at java.net.URLClassLoader.findClass(URLClassLoader.java:381) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:424) 

私はjarファイルには問題を構築することはできません、すべての依存関係は私のポンポンです。 org.jsonのように、同じjava.lang.NoClassDefFoundErrorエラーをスローするような、私が使用しているライブラリがいくつかあります。私はこれらのクラスをインポートします。私の瓶にはこれらのファイルは含まれておらず、私のクラスだけです。私はそれが関係していると思っています。本当?私が使用しているこれらの「外部」クラスのためにamazonクラスの置換を見つける必要がありますか?よくわかりません。

答えて

6

Amazon Lambdaはあなたの依存関係をダウンロードしません。展開ファイルには、ラムダ関数を実行するために必要なすべての依存関係が含まれていると想定しています。複数のjarファイル(ラムダ関数jarとすべての依存関係jar)を含めることができるzipデプロイメントメソッドの使用に切り替える必要があります。 hereの指示に従ってください。

+0

そのリンクはまさに​​私が必要とするものです!ありがとうございました! – user2917629

3

別のオプションは、fat jarファイルを作成することです。それはすでにすべてのあなたの依存関係を含んでいる瓶です。そのようなファイルは、展開するのにはより大きいが、管理は容易である。私は脂肪の瓶を構築するためにMavenのようないくつかのビルドツールを使用することをお勧めします。

0

通常の依存関係ツリーに加えて、dependencyManagement> dependencies> dependencyタグにpom.xmlを含めるだけです。それはまた、脂肪の瓶を作成します。

関連する問題