我面临着AWS lambda函数困难的Java

问题描述:

我已经创建了AWS拉姆达功能,并添加了依赖性太大,但是当我上传的罐子,点击测试它显示我此错误我面临着AWS lambda函数困难的Java

Error loading method JSONtoURL on class MinimumTool.Index: class 
java.lang.NoClassDefFoundError 
java.lang.NoClassDefFoundError: org/json/JSONObject 
    at java.lang.Class.getDeclaredMethods0(Native Method) 
    at java.lang.Class.privateGetDeclaredMethods(Class.java:2701) 
    at java.lang.Class.privateGetPublicMethods(Class.java:2902) 
    at java.lang.Class.getMethods(Class.java:1615) 
Caused by: java.lang.ClassNotFoundException: org.json.JSONObject 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357) 
    ... 4 more 

我有使用maven和eclipse来创建jar。 这里是我的pom.xml文件

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>minimum-tool</groupId> 
    <artifactId>lamda-pricing-tool</artifactId> 
    <version>0.0.1-SNAPSHOT</version> 
    <name>lamda-pricing-tool</name> 
    <description>Minimum Pricing Tool</description> 
    <dependencies> 
    <dependency> 
     <groupId>com.amazonaws</groupId> 
     <artifactId>aws-lambda-java-core</artifactId> 
     <version>1.1.0</version> 
    </dependency> 
    <dependency> 
     <groupId>org.json</groupId> 
     <artifactId>json</artifactId> 
     <version>20151123</version> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-shade-plugin</artifactId> 
     <version>2.3</version> 
    </dependency> 
    </dependencies> 
</project> 

看来,你是在pom.xml中宣布对org.json:json依赖假设相关的类/罐将在运行时可用。当您在可以使用这些类的环境中部署应用程序时,通常会出现这种情况。但是,如果您将其作为独立应用程序运行,那么像maven packagemaven install这样的命令会创建包含它们的而不是。所以,你必须采取额外的步骤,将这些依赖类真正捆绑到一个jar中,通常称为jar。

看看maven shade plugin并用它生成的jar运行你的应用程序。

您需要创建一个名为Deployment Package的zip文件,其中包含您的所有代码以及代码使用的所有其他jar文件。

亚马逊对与Eclipse和Maven这样一些文档:http://docs.aws.amazon.com/lambda/latest/dg/java-create-jar-pkg-maven-and-eclipse.html

尤其

  • pom.xml文件点击右键,选择的Maven,添加插件。添加组org.apache.maven.plugins,工件maven-shade-plugin,版本2.3或更高版本。
  • 右键单击项目,选择Run As,Maven build。编辑配置并将package shade:shade添加到目标中。

现在,当您使用Run构建项目时,它将构建一个Deployment Package jar。