繁体   English   中英

AWS Lambda 和 Java 反射 (Guava)

[英]AWS Lambda and Java Reflections (Guava)

我正在尝试在我的 AWS Lambda 函数中运行Guava反射,但它似乎在生产中不起作用..

我试图运行的代码应该创建一个带有类名和类的Map<String, Class>

代码:

val converterClassMap by lazy {
val cl = ClassLoader.getSystemClassLoader()
ClassPath.from(cl).getTopLevelClasses("converters").asSequence().mapNotNull { it.load().kotlin }
        .filter { it.simpleName?.endsWith("Converter") == true }
        .associateBy( { it.simpleName }, { it } )
}

在本地运行此代码可以完美运行,但在 lambda 上的生产中运行它会返回映射为空的错误。
Key PaginationConverter is missing in the map.: java.util.NoSuchElementException

有没有其他人遇到过这个问题?

又一案。 你有

val cl = ClassLoader.getSystemClassLoader()

代码中的行。 这意味着它需要系统类加载器来扫描类。

尝试使用

class SomeClassFromYouCodeNotALibrary
val cl = SomeClassFromYouCodeNotALibrary::class.java.classLoader

那个将工作稳定,独立于应用程序中使用的类加载器的数量。 例如,AWS Lambda 运行时可能具有特定的类加载器。

如果它不起作用,请尝试记录类加载器类型和类路径,例如println(cl)println((cl as? URLClassLoader).getURLs().joinToString(", "))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM