我已经创建了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>
答案 0 :(得分:1)
似乎您在pom.xml中声明对org.json:json
的依赖,假设相关的类/ jar将在运行时可用。当您在希望这些类可用的环境中部署应用程序时,通常就是这种情况。但是,如果您将其作为独立应用程序运行,那么maven package
或maven install
等命令创建的jar 不包含它们。因此,您必须采取额外步骤将这些依赖类实际捆绑到jar中,通常称为 uber jar。
查看maven shade plugin并使用其生成的jar运行您的应用。
答案 1 :(得分:1)
您需要创建一个名为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或更高版本。 package shade:shade
添加到目标中。现在,当您使用Run构建项目时,它将构建一个Deployment Package jar。