我在使用AWS Lambda函数Java时遇到了困难

我在使用AWS Lambda函数Java时遇到了困难,java,amazon-web-services,aws-lambda,Java,Amazon Web Services,Aws Lambda,我已经创建了AWS lambda函数并添加了依赖项,但是当我上传jar并单击Test时,它显示了这个错误 Error loading method JSONtoURL on class MinimumTool.Index: class java.lang.NoClassDefFoundError java.lang.NoClassDefFoundError: org/json/JSONObject at java.lang.Class.getDeclaredMethods0(Nativ

我已经创建了AWS lambda函数并添加了依赖项,但是当我上传jar并单击Test时,它显示了这个错误

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>

4.0.0
最小刀具
lamda定价工具
0.0.1-快照
lamda定价工具
最低定价工具
亚马逊网站
aws lambda java内核
1.1.0
org.json
json
20151123
org.apache.maven.plugins
maven阴影插件
2.3

您似乎在pom.xml中声明对
org.json:json
的依赖关系,假设相关类/jar在运行时可用。当您在预期这些类可用的环境中部署应用程序时,通常会出现这种情况。但是,如果您将其作为一个独立的应用程序运行,那么像
maven-package
maven-install
这样的命令创建的jar不包含它们。因此,您必须采取额外的步骤将这些依赖类实际绑定到一个jar中,通常称为uberjar


看一看,然后用它生成的jar运行你的应用程序

您需要创建一个称为部署包的zip文件,其中包含所有代码,以及代码使用的所有其他jar文件

Amazon提供了一些关于使用Eclipse和Maven执行此操作的文档:

特别是,

  • 右键单击您的
    pom.xml
    文件,选择Maven,添加插件。添加group
    org.apache.maven.plugins
    ,artifact
    maven shade plugin
    ,版本2.3或更高版本
  • 右键单击项目,选择RunAs,Maven build。编辑配置并将
    package shade:shade
    添加到目标中
现在,当您使用Run构建项目时,它将构建一个部署包jar