java - Kotlin java.lang.NoSuchMethodException:<init>()

标签 java kotlin instantiation

我正在使用kotlin将数据库中的类存储在数据库中。问题是该类没有没有参数的构造函数(这是一个Java类)。当我从数据库中检索对象时,出现以下错误,因为它没有构造函数:

java.lang.NoSuchMethodException: org.springframework.security.oauth2.core.OAuth2AccessToken.<init>()

我认为它将解决问题的唯一解决方案如下:
  • 将检索对象的类更改为Java。
  • 存储另一个对象,而不是org.springframework.security.oauth2.core.OAuth2AccessToken类

  • 关于如何解决此问题还有其他想法吗?

    这是我在数据库中的类(class):
    @Document(collection = "authorizedClient")
    data class AuthorizedClientDatabase(
        @Id
        var id: ObjectId = ObjectId.get(),
        var name: String? = null,
        var clientRegistration: ClientRegistration,
        var accessToken: OAuth2AccessToken,
        var refreshToken: OAuth2RefreshToken? = null
    )
    

    这是存储库类:
    @Repository
    interface AuthorizedClientDatabaseRepository : MongoRepository<AuthorizedClientDatabase, ObjectId> {
    }
    

    这是OAuth2AccessToken

    我只是在做一个:
    authorizedClientDatabaseRepository.findById(...)
    

    最佳答案

    OAuth2AccessToken 类没有您要尝试调用的非参数构造函数。您需要更改代码以使用两个现有构造函数之一:

    public OAuth2AccessToken(TokenType tokenType, String tokenValue, 
           Instant issuedAt, Instant expiresAt) {
       // ...       
    }
    

    要么
    public OAuth2AccessToken(TokenType tokenType, String tokenValue, 
            Instant issuedAt, Instant expiresAt, Set<String> scopes) {
       // ...
    }
    

    关于java - Kotlin java.lang.NoSuchMethodException:<init>(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61960058/

    相关文章:

    java - elasticsearch 和 searchguard ssl 的 keystore 和信任库问题

    Android - fragment 是 "transparent",我可以点击它

    C++ 使用默认值在 Struct 中实例化 2D Vector

    c++ - bool 常量表达式中的冗余实例化

    java - 当我将类更改为抽象时实例化错误

    java - 使用不需要的参数创建查询 Spring Data Jpa

    java - 使用 JPA 删除实体时出现问题

    Java 使用 ByteBuffer 解码来自 GPS 设备的字节

    java - 在匿名类的接口(interface)中只实现一种方法

    kotlin - 如何从kotlin中的数组列表中删除项目