不能使用com.sun.net.httpserver - Java 8

问题描述:

我想创建一个简单的服务器程序来处理http请求。因此,通过最少的搜索,我偶然发现com.sun.net包中的httpserver类的oracle文档。我对Java相对来说比较陌生,所以我认为Oracle自己“赞助”的类将包含在默认库中。不能使用com.sun.net.httpserver - Java 8

不幸的是,情况并非如此。经过了很多关于可能的语法导入错误(各种错误唤起)并且在我的Ubuntu机器上正确安装了Oracle JDK 8的试验之后,编译器说这个软件包不存在。我需要做些什么才能让包装起作用?

+3

不要将'com.sun.xxx'软件包视为它们是标准库的一部分。 ORACLE的java发行版可能是最常见的,但它不是唯一的。 – Cubic

+1

在这种情况下,解决方案是什么?我不偏向答案,这就是为什么我问。 –

+0

它真的说包装不存在吗?什么是实际的错误信息?从字面上看,不是一个解释。精度很重要。 – EJP

我终于做到了。大多数情况下,这是我的错误理解,因为我只输入了一个错误的观点 - 也就是我只输入了com.sun.net.httpserver,认为后一部分是我想要的实际班级,但它仅仅是包名。然后我继续导入com.sun.net.httpserver.HttpServer,然后我的其他课程。最后一个com.sun.net.httpserver.*将工作得很好。现在看来我觉得这很愚蠢,但我想我会把它留在这里,以防万一任何人有同样的误解 - 我已经看到了这个问题中最受欢迎的一个。当然,正如其他人指出的那样,该软件包不是标准Java库的一部分,但我专门为此使用了Oracle Java。

P.S.与其他答案所暗示的不同,该类非常有用,但是现在我偶然发现了有关读取请求主体权限的另一个问题,这可能与客户机 - 服务器的区域设置有关,我现在将搜索到这只是一个警告任何人想使用该软件包。

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

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

编辑:

您也可以看一下http://sparkjava.com/,未经测试,但例子看起来很有希望,他们使用的是Java 8个美观大方等特点。

+1

'sun。*'类是实现的内部部分,在Javadoc中有一个特定的警告,并提醒他们不要在应用程序代码中使用它们。在这种情况下,支持'com.sun。*'类,例如在JNDI提供者的情况下。 – EJP