【问题标题】:Cannot use com.sun.net.httpserver - Java 8无法使用 com.sun.net.httpserver - Java 8
【发布时间】:2015-07-19 23:59:54
【问题描述】:

我正在尝试创建一个简单的服务器程序来处理 http 请求。因此,通过最少的搜索,我偶然发现了 httpserver 类的 Oracle 文档,位于 com.sun.net 包中。我对 Java 比较陌生,所以我认为 Oracle 本身“赞助”的一个类将包含在默认库中。

不幸的是,事实并非如此。在对可能的语法导入错误(引起各种错误)进行了大量试验并在我的 Ubuntu 机器上正确安装了 Oracle JDK 8 之后,编译器说该包不存在。我必须做些什么才能让包工作?

【问题讨论】:

  • 不要将com.sun.xxx 包视为标准库的一部分。 Oracles java 发行版可能是最常见的,但不是唯一的。
  • 在这种情况下,解决方案是什么?我对答案没有偏见,这就是我问的原因。
  • 真的说这个包不存在吗?实际的错误信息是什么?从字面上看,不是释义。精度很重要。
  • 确实说不存在,但毕竟是很简单的事情。看我的回答。至少我真的被包名欺骗了,认为它实际上是我想要的类。当然,这主要是因为我是 Java 新手,但如果能帮助其他遇到同样问题的新手,我会很高兴。

标签: java import java-8 packages


【解决方案1】:

我终于成功了。大多数情况下,这是我的误解,因为我只导入了一个错误的点 - 即我只导入了com.sun.net.httpserver,认为后者是我想要的实际类,但它只是包名.然后我开始导入com.sun.net.httpserver.HttpServer,然后是我的其他课程。最后一个com.sun.net.httpserver.* 会工作得很好。现在我想通了,这似乎很愚蠢,但我想我会把它留在这里,以防万一有人有同样的误解——我已经在这个问题上看到了 1 个最喜欢的。当然,正如其他人所指出的,该包不是标准 Java 库的一部分,但我专门为此使用了 Oracle Java。

附:该类非常有用,与其他答案所暗示的不同,但现在我偶然发现了另一个关于正确读取请求正文的问题,这可能与客户端服务器的语言环境有关,我现在将进行搜索那.. 只是对任何想使用该软件包的人的警告。

【讨论】:

    【解决方案2】:

    首先尽量避免使用 com.sun.xxx 包,因为它们是 Oracle/Sun java 实现的内部。

    其次,为什么不使用 apache 的库?见https://hc.apache.org/

    编辑:

    您也可以查看 http://sparkjava.com/ ,未经过测试,但示例看起来很有希望,并且它们使用了 Java 8 不错的功能。

    【讨论】:

    • sun.* 类是实现的内部,Javadoc 中有一个特定的警告这样说,并警告不要在应用程序代码中使用它们。支持com.sun.* 类,例如在本例中以及在 JNDI 提供者的情况中。
    • 甚至 com.sun 类都是 Oracle 的专有类,不包含在其他非 Oracle JDK/JRE 中。这应该足以避免使用这些类。
    猜你喜欢
    • 2014-12-11
    • 2018-07-21
    • 1970-01-01
    • 2016-07-08
    • 2014-07-20
    • 1970-01-01
    • 2016-05-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多