Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Kotlin okhttp3 moshi-JsonAdapter运行时问题_Kotlin_Okhttp_Moshi - Fatal编程技术网

Kotlin okhttp3 moshi-JsonAdapter运行时问题

Kotlin okhttp3 moshi-JsonAdapter运行时问题,kotlin,okhttp,moshi,Kotlin,Okhttp,Moshi,我正在尝试运行一个示例代码,该代码使用okhttp3进行RESTAPI调用 MoshiJsonConvertor.kt: import com.squareup.moshi.JsonClass import com.squareup.moshi.Moshi import okhttp3.OkHttpClient import okhttp3.Request import java.io.IOException class MoshiJsonConvertor { private val

我正在尝试运行一个示例代码,该代码使用okhttp3进行RESTAPI调用

MoshiJsonConvertor.kt:

import com.squareup.moshi.JsonClass
import com.squareup.moshi.Moshi
import okhttp3.OkHttpClient
import okhttp3.Request
import java.io.IOException

class MoshiJsonConvertor {
    private val client = OkHttpClient()
    private val moshi = Moshi.Builder().build()
    private val gistJsonAdapter = moshi.adapter(Gist::class.java)

    fun run() {
        val request = Request.Builder()
                .url("https://api.github.com/gists/c2a7c39532239ff261be")
                .build()
        client.newCall(request).execute().use { response ->
            if (!response.isSuccessful) throw IOException("Unexpected code $response")

            val gist = gistJsonAdapter.fromJson(response.body!!.source())

            for ((key, value) in gist!!.files!!) {
                println(key)
                println(value.content)
            }
        }
    }

    @JsonClass(generateAdapter = true)
    data class Gist(var files: Map<String, GistFile>?)

    @JsonClass(generateAdapter = true)
    data class GistFile(var content: String?)
}

fun main() {
    MoshiJsonConvertor().run()
}
dependencies {
    testCompile group: 'junit', name: 'junit', version: '4.12'
    implementation 'com.squareup.okhttp3:okhttp:4.2.2'
    implementation 'com.squareup.moshi:moshi:1.9.1'
    implementation 'com.squareup.moshi:moshi-kotlin-codegen:1.9.1'
}
apply plugin: 'kotlin-kapt'

dependencies {
    implementation 'com.squareup.okhttp3:okhttp:4.2.2'
    implementation 'com.squareup.moshi:moshi:1.9.1'
    kapt 'com.squareup.moshi:moshi-kotlin-codegen:1.9.1'
}
运行代码时,出现以下错误:

线程“main”java.lang.RuntimeException中的异常:未能找到生成的JsonAdapter

class for class MoshiJsonConvertor$Gist
    at com.squareup.moshi.internal.Util.generatedAdapter(Util.java:542)
    at com.squareup.moshi.StandardJsonAdapters$1.create(StandardJsonAdapters.java:60)
    at com.squareup.moshi.Moshi.adapter(Moshi.java:138)
    at com.squareup.moshi.Moshi.adapter(Moshi.java:98)
    at com.squareup.moshi.Moshi.adapter(Moshi.java:72)
    at MoshiJsonConvertor.<init>(MoshiJsonConvertor.kt:10)
    at MoshiJsonConvertorKt.main(MoshiJsonConvertor.kt:36)
    at MoshiJsonConvertorKt.main(MoshiJsonConvertor.kt)
Caused by: java.lang.ClassNotFoundException: MoshiJsonConvertor_GistJsonAdapter
    at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:583)
    at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
    at java.base/java.lang.Class.forName0(Native Method)
    at java.base/java.lang.Class.forName(Class.java:398)
    at com.squareup.moshi.internal.Util.generatedAdapter(Util.java:516)
    ... 7 more
类MoshiJsonConvertor$Gist的类 位于com.squareup.moshi.internal.Util.GenerateDapter(Util.java:542) 在com.squareup.moshi.StandardJsonAdapters$1.create(StandardJsonAdapters.java:60) 位于com.squareup.moshi.moshi.adapter(moshi.java:138) 位于com.squareup.moshi.moshi.adapter(moshi.java:98) 位于com.squareup.moshi.moshi.adapter(moshi.java:72) 在MoshiJsonConvertor(MoshiJsonConvertor.kt:10) 在moshijsonvertorkt.main(moshijsonvertorkt.36) 在moshijsonvertorkt.main(moshijsonvertorkt) 原因:java.lang.ClassNotFoundException:MoshiJsonConvertor\u GistJsonAdapter 位于java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:583) 位于java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178) 位于java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521) 位于java.base/java.lang.Class.forName0(本机方法) 位于java.base/java.lang.Class.forName(Class.java:398) 位于com.squareup.moshi.internal.Util.GenerateDapter(Util.java:516) ... 还有7个
有人能告诉我这里缺少什么吗?

解决方案:

import com.squareup.moshi.JsonClass
import com.squareup.moshi.Moshi
import okhttp3.OkHttpClient
import okhttp3.Request
import java.io.IOException

class MoshiJsonConvertor {
    private val client = OkHttpClient()
    private val moshi = Moshi.Builder().build()
    private val gistJsonAdapter = moshi.adapter(Gist::class.java)

    fun run() {
        val request = Request.Builder()
                .url("https://api.github.com/gists/c2a7c39532239ff261be")
                .build()
        client.newCall(request).execute().use { response ->
            if (!response.isSuccessful) throw IOException("Unexpected code $response")

            val gist = gistJsonAdapter.fromJson(response.body!!.source())

            for ((key, value) in gist!!.files!!) {
                println(key)
                println(value.content)
            }
        }
    }

    @JsonClass(generateAdapter = true)
    data class Gist(var files: Map<String, GistFile>?)

    @JsonClass(generateAdapter = true)
    data class GistFile(var content: String?)
}

fun main() {
    MoshiJsonConvertor().run()
}
dependencies {
    testCompile group: 'junit', name: 'junit', version: '4.12'
    implementation 'com.squareup.okhttp3:okhttp:4.2.2'
    implementation 'com.squareup.moshi:moshi:1.9.1'
    implementation 'com.squareup.moshi:moshi-kotlin-codegen:1.9.1'
}
apply plugin: 'kotlin-kapt'

dependencies {
    implementation 'com.squareup.okhttp3:okhttp:4.2.2'
    implementation 'com.squareup.moshi:moshi:1.9.1'
    kapt 'com.squareup.moshi:moshi-kotlin-codegen:1.9.1'
}