【问题标题】:Java cannot find imports in Class URLConnection.javaJava 在 URLConnection.java 类中找不到导入
【发布时间】:2021-09-08 09:52:38
【问题描述】:

我在 Mac 上使用 Android Studio。在使用 URLConnection.java 类时,我发现 URLConnection.java 中的某些类不能正确导入:

我该如何解决这个问题?

【问题讨论】:

  • 为什么会出现问题?
  • @shmosel 因为某些方法无法解析。
  • 如需更多帮助,请发布完整错误,以及有关 JDK/JVM 的更多详细信息。听起来你的 JDK 坏了,或者如果这是一个自定义类,那么不要使用 sun 包,特别是如果这个应用程序是用于 Android 或跨具有各种 Java 版本的多个平台?有关更多信息,请参阅此处:oracle.com/java/technologies/faq-sun-packages.html“直接调用 sun.* 包的 Java 程序不能保证在所有 Java 兼容平台上都可以工作。事实上,即使在未来的版本中也不保证这样的程序可以工作同一平台。”

标签: java android-studio class import


【解决方案1】:

Android 平台上没有sun.* 包。

因此,如果您正在为 Android 构建,解决方案是更改代码,使其不依赖于这些包。

为了记录,使用sun.* 包总是一个坏主意,即使在Oracle Java 上也是如此。正如Oracle Java documentation 所说:

“直接调用 sun.* 包的 Java 程序不能保证在所有 Java 兼容的平台上都能工作。事实上,即使在同一平台上的未来版本中,这样的程序也不能保证工作。”

从包的名称来看,您只是使用它们来获取一些常量定义。 (HTTP 响应代码?)这些常量很可能是在 Android 平台上的另一个类中定义的。但是你的问题并没有解释这些导入的原因,所以我不能给出具体的建议。


注意事项:

  1. 如果您尝试为 Android 重新编译标准 Java SE URLConnection 类,我的建议是:不要。

    Android 已经有这个类,所以不需要标准的 Java SE 版本。如果出于某种原因确实需要修改类(在 Android 上),请从 Android 源代码开始。它不应该有那些 sun.* 依赖项。

  2. 如果您尝试使用 Android Studio 开发非 Android Java,使用专为此目的设计的 IDE 可能会更简单。但是,如果您必须...确保您告诉 Android Studio 针对 Java SE 库编译您的代码。

【讨论】:

    猜你喜欢
    • 2011-03-09
    • 1970-01-01
    • 2011-07-27
    • 2012-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-09
    • 1970-01-01
    相关资源
    最近更新 更多