当前位置: 首页 > 知识库问答 >
问题:

LJava/NET/URL类中没有字段主机

沈建柏
2023-03-14
E/AndroidRuntime: FATAL EXCEPTION: AsyncTask #1
    Process: com.example.corentin.myapplication, PID: 3168
    java.lang.RuntimeException: An error occurred while executing doInBackground()
        at android.os.AsyncTask$3.done(AsyncTask.java:354)
        at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:383)
        at java.util.concurrent.FutureTask.setException(FutureTask.java:252)
        at java.util.concurrent.FutureTask.run(FutureTask.java:271)
        at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:245)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
        at java.lang.Thread.run(Thread.java:764)
     Caused by: java.lang.NoSuchFieldException: No field host in class Ljava/net/URL; (declaration of 'java.net.URL' appears in /system/framework/core-oj.jar)
        at java.lang.Class.getDeclaredField(Native Method)
        at khttp.requests.GenericRequest.toIDN(GenericRequest.kt:193)
        at khttp.requests.GenericRequest.makeRoute(GenericRequest.kt:198)
        at khttp.requests.GenericRequest.<init>(GenericRequest.kt:128)
        at khttp.KHttp.request(KHttp.kt:58)
        at khttp.KHttp.get(KHttp.kt:28)
        at khttp.KHttp.get$default(KHttp.kt:27)
        at com.example.corentin.myapplication.InfoUser.run(InfoUser.kt:29)
        at com.example.corentin.myapplication.InfoUser$onCreate$1.invoke(InfoUser.kt:23)
        at com.example.corentin.myapplication.InfoUser$onCreate$1.invoke(InfoUser.kt:16)
        at com.example.corentin.myapplication.doAsync.doInBackground(InfoUser.kt:11)
        at com.example.corentin.myapplication.doAsync.doInBackground(InfoUser.kt:9)
        at android.os.AsyncTask$2.call(AsyncTask.java:333)
        at java.util.concurrent.FutureTask.run(FutureTask.java:266)
        at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:245) 
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167) 
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641) 
        at java.lang.Thread.run(Thread.java:764) 
class doAsync(val handler: () -> Unit) : AsyncTask<Void, Void, Void>() {
    override fun doInBackground(vararg params: Void?): Void? {
        handler()
        return null
    }
}

class InfoUser : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_info_user)

        doAsync {
            run("https://api.imgur.com/3/account/xcoco55?client_id=CLIENT ID")
        }.execute()
    }


    fun run(url: String) {
        val response  = khttp.get(url)

        println("Coucou")
        if (response.statusCode == 200) {
            runOnUiThread {textView.text = response.text}
        }
    }
}

当我删除val response=khttp.get(url)行时,或者当我在手机(Android Oreo 8.1)上启动应用程序时,一切都运行良好。

你认为这个错误是来自Android9.0还是来自模拟器?

共有1个答案

郁权
2023-03-14

免责声明:我是通过以下请求被提到这篇文章的。

这是一个问题,当您的目标是Android9.0时,就会遇到,正如@Torben Kohlmeier所提到的,因为该字段不再可以访问。

您可以将模块build.gradle中的khttp实现替换为以下内容,这将按预期工作。

 类似资料:
  • 我在将文件存储到FTPS服务器时遇到问题。我正在使用Apache Commons Net FTPSClient来存储文件。 首先,我遇到了以下问题:“522 SSL连接失败:需要会话重用”。我通过以下网站解决了这个问题:如何使用相同的TLS会话通过数据连接连接到FTPS服务器? 但在这个解决方案中,我遇到了一个新的错误,我不知道如何解决这个错误: 我知道它已经存在一个非常相似的问题Android-

  • 试图通过遍历查看以下PDF文件中的所有字段,但它是“空的”。但如果我保存到一个新文件: 田地是否“隐蔽”?有办法得到他们吗?(我的最终目标是自动填写其中的一些内容)

  • 我正在从检索小区信息数据() 对于每个小区信息对象,我通过以下途径查询mcc(移动国家代码)和mnc(移动网络代码) 其中eachCellInfo是CellInfo的对象 根据文档,不推荐使用该函数: 但是,当我使用建议的方法通过 方法说明: 其他信息:

  • 我正在尝试使用Spring Boot,并创建一个jar,并将其安装到我的maven存储库中。 这是一个库jar文件,将在我的主应用程序中用作依赖项,它也是一个Spring-Boot应用程序。现在,我只是在做一个hello world示例。这是我在这个项目中的一个类: 我的POM基本上是这样的: 但是当我尝试构建时,我得到了“找不到主类”错误。这对我来说非常有意义,但是我如何让spring制作一个库

  • 我在一个Android项目中使用了reverfit(2.7.2)和OkHttp版本(4.4.0),但我遇到了一个请求崩溃。 依赖项: 崩溃: noSuchMethodError:没有虚拟方法toString(Z)lJava/lang/String;在类LOKHTTP3/Cookie中;或其超级类(“OKHTTP3.cookie”的声明出现在/data/app/com.package-1/base.

  • 问题内容: 我正在做大学项目。 我需要从课堂上获取所有字段。甚至是私有的并继承的。我试图获取所有声明的字段,然后转换为超类并重复。我的代码片段: 但这行不通。强制转换后仍然是同一类(不是超类)。 我将感谢您提供任何有关如何解决铸造问题或如何以其他方式检索这些字段的帮助。 问题不是要访问字段,而是要获取字段名称! 我以这种方式进行管理: 问题答案: obj = obj.getClass().getS