2 回答
TA贡献1909条经验 获得超7个赞
关键点在堆栈跟踪的底部:
org.springframework.cglib.core.AbstractClassGenerator.generate(AbstractClassGenerator.java:336) ~[spring-core-5.0.10.RELEASE.jar!/:5.0.10.RELEASE]
[INFO] GCLOUD: ... 43 common frames omitted
[INFO] GCLOUD: Caused by: java.lang.ClassFormatError: Illegal method name "createConfiguration-tQynZQ0" in class com/hexigames/configurationservice/domain/game/GameConfigurationService$$EnhancerBySpringCGLIB$$76757398
[INFO] GCLOUD: at java.lang.ClassLoader.defineClass1(Native Method) ~[na:1.8.0_181]
[INFO] GCLOUD: at java.lang.ClassLoader.defineClass(ClassLoader.java:763) ~[na:1.8.0_181]
换句话说,Spring 使用自定义类加载器按需生成类。此类使用带有 - 的方法名称。defineClass1类加载器中的方法会阻塞它。由于类加载器用于加载任何类,我唯一的假设是谷歌云以某种方式使用了调整后的类加载器。由于类加载器对安全性非常敏感,这是有道理的,但显然您的 Kotlin 代码对安全性不敏感。
根据 JVM 规范,该-字符不是 JVM 级别方法名称中的非法字符:https : //docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.2。 2 . 因此,这似乎是谷歌云平台中的一个错误。顺便提一句。该字符在 Java 中是非法的,但 JVM 宽松得多。
添加回答
举报