2015-05-08 46 views
0

我想創建一個簡單的服務器程序來處理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

回答

1

我終於做到了。大多數情況下,這是我的錯誤理解,因爲我只輸入了一個錯誤的觀點 - 也就是我只輸入了com.sun.net.httpserver,認爲後一部分是我想要的實際班級,但它僅僅是包名。然後我繼續導入com.sun.net.httpserver.HttpServer,然後我的其他課程。最後一個com.sun.net.httpserver.*將工作得很好。現在看來我覺得這很愚蠢,但我想我會把它留在這裏,以防萬一任何人有同樣的誤解 - 我已經看到了這個問題中最受歡迎的一個。當然,正如其他人指出的那樣,該軟件包不是標準Java庫的一部分,但我專門爲此使用了Oracle Java。

P.S.與其他答案所暗示的不同,該類非常有用,但是現在我偶然發現了有關讀取請求主體權限的另一個問題,這可能與客戶機 - 服務器的區域設置有關,我現在將搜索到這只是一個警告任何人想使用該軟件包。

0

首先儘量避免使用com.sun.xxx包,因爲那些是Oracle/Sun java實現的內部組件。

其次,爲什麼不使用apache的庫?見https://hc.apache.org/

編輯:

您也可以看一下http://sparkjava.com/,未經測試,但例子看起來很有希望,他們使用的是Java 8個美觀大方等特點。

+1

'sun。*'類是實現的內部部分,在Javadoc中有一個特定的警告,並提醒他們不要在應用程序代碼中使用它們。在這種情況下,支持'com.sun。*'類,例如在JNDI提供者的情況下。 – EJP