Java Playfrawork 代码热重载不适用于 pac4j 库

问题描述 投票:0回答:1

我有 Play 框架 (v2.8.16) 和 Pac4j (Pac4j v10.0.2, pac4j-http:4.5.7 && pac4j-oauth:4.5.7, pac4j-jwt:4.5.7) 和 Java 12 。我的应用程序是一个 Java 应用程序并使用 Play 的多模块设置。在 Play 的开发模式中,有一个热代码重新加载功能,该功能似乎会在扩展 Pac4j 类型的自定义类上出现问题。这种情况经常发生,无论从 IDE (IntelliJ) 运行还是命令行 SBT 都是一样的。

我有一个扩展 pac4j Profile 的类

public class CustomJwtProfile extends org.pac4j.jwt.profile.JwtProfile

在应用程序启动时一切都很好,但是在修改代码后,当应用程序运行类的热重载时失败并出现此错误

play.api.PlayException: Execution exception[[ClassCastException: class my.package.CustomJwtProfile cannot be cast to class class my.package.CustomJwtProfile (class my.package.CustomJwtProfile is in unnamed module of loader play.runsupport.DelegatedResourcesClassLoader @2a1321ec; my.package.CustomJwtProfile is in unnamed module of loader play.runsupport.DelegatedResourcesClassLoader @47424930)]]

不知道为什么会发生这种情况,特别是对于扩展 Pac4j 的自定义类。 pac4j 正在使用类加载器吗?

java playframework pac4j
1个回答
0
投票

pac4j 不太使用类加载器,它有时会使用它们来查找类及其构造函数。

我对“无法投射到”后面的双“类”字感到惊讶:

class my.package.CustomJwtProfile cannot be cast to class class my.package.CustomJwtProfile
。感觉就像是使用了类类型而不是类本身。

您可以复制/粘贴完整的堆栈跟踪吗?

© www.soinside.com 2019 - 2024. All rights reserved.