首页 > 解决方案 > 在 AWS Java Lambda 中找不到类异常

问题描述

这是我们得到的例外

Exception:
java.lang.ClassNotFoundException: com.A.B.C.ZZZZZZZZZZZZZZZZZZ
    at java.base/java.net.URLClassLoader.findClass(Unknown Source)
    at java.base/java.lang.ClassLoader.loadClass(Unknown Source)
    at java.base/java.lang.ClassLoader.loadClass(Unknown Source)
    at java.base/java.lang.Class.forName0(Native Method)
    at java.base/java.lang.Class.forName(Unknown Source)

所有源代码都在根目录中,而lib在lib目录中

当从本地机器而不是从 Jenkins 构建时,这有效

在 jenkins 和本地 mac 上,我们使用 Gradle 进行编译,Gradle zip 构建了 zip 工件

更具体地说,我在这里关注了https://docs.aws.amazon.com/lambda/latest/dg/create-deployment-pkg-zip-java.html

apply plugin: 'java'

dependencies {
    compile fileTree(dir: 'jars', include: '*.jar')
}

task buildZip(type: Zip) {
    from compileJava
    from processResources
    into('lib') {
        from configurations.runtimeClasspath
    }
}

似乎这还不够,我们还需要使用 chmod

标签: javaamazon-web-servicesaws-lambda

解决方案


根文件夹没有每个人的读取权限。为了解决这个问题,我必须chmod在 zip 任务之前调用以正确设置权限。


推荐阅读