[英]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.