2012-09-06 121 views
9

我正在邁向學習JSF的第一步。我發現了這本有趣的書,名爲「Core JavaServer Faces Third Edition」。「javax.inject包不存在」錯誤,同時在命令行中用javac編譯

試着編譯第一個例子,你可以下載源代碼:http://horstmann.com/corejsf/。當我鍵入命令行

javac UserBean.java 

下面我得到的錯誤:

package javax.inject does not exist 
package javax.enterprise.context doe not exist 

我已經下載的Java EE,螞蟻和GlassFish。

這裏是我的命令行的一個單元:

C:\JSF-Tutorial\corejsf3-examples\javaee\ch01\login\src\java\com\corejsf>javac UserBean.java 
UserBean.java:4: error: package javax.inject does not exist 
import javax.inject.Named; 
       ^
UserBean.java:6: error: package javax.enterprise.context does not exist 
import javax.enterprise.context.SessionScoped; 
          ^
UserBean.java:9: error: cannot find symbol 
@Named("user") // or @ManagedBean(name="user") 
^ 
    symbol: class Named 
UserBean.java:10: error: cannot find symbol 
@SessionScoped 
^ 
    symbol: class SessionScoped 
4 errors 

C:\JSF-Tutorial\corejsf3-examples\javaee\ch01\login\src\java\com\corejsf> 

被谷歌上搜索如何編譯的最後一個星期,但沒有任何有用的Java EE應用程序。

有人可以幫我解決這個問題,我需要解決這個問題,所以我可以繼續學習JSF。

S.P: 在開始編譯NetBeans的Java EE項目之前,我想學習如何編譯Java EE應用程序。 我更喜歡學習如何使用GlassFish,然後也許後者我會考慮Tomcat。

還有一個問題;使用Java EE和GlassFish服務器部署我的應用程序有什麼區別?

+0

確保您使用JSF 2.x和GlassFish 3.x或其他Java EE 6 Web應用程序服務器,並且您的項目正在引用您的GlassFish庫。 –

回答

10

您需要在編譯時類路徑中包含包含這些類的JAR文件。

在您使用GlassFish服務器的情況下,這就是/glassfish/lib/javaee.jar。您可以指定類路徑爲(或-classpath)參數javac命令。它是一個分號分隔的磁盤文件系統路徑,指向應該包含在編譯時類路徑中的JAR文件和/或類文件夾。然後

javac -cp /path/to/glassfish/lib/javaee.jar UserBean.java 

javac將尋找在那裏,一旦遇到這是由import引用一個未知的類,以便它可以在其他驗證,如果你用正確的方式。

這在技術上與Java EE無關。這只是基本的Java。我建議在深入Java EE之前先學習一下。

如果您使用的是IDE,那麼只需將目標服務器作爲「目標運行時」附加到項目即可。然後,IDE將自動完成構建路徑的所有魔術(編譯時類路徑)。

8

在NetBeans 7.3中,您可以在項目查看器中右鍵單擊libraries文件夾,選擇'add library'選項,然後從列表中選擇'Java EE 6 API Library'。

+0

如果我不使用Netbeans 7.3 ..會怎麼樣? – NREZ

+0

@NREZ我相信Eclipse具有類似的功能。這只是添加JAR的簡單方法。 – Thufir

2

在NetBeans IDE 8.0中,它與上述版本7稍有不同。3

  1. 中的Java EE項目
  2. 選擇Import...
  3. 選擇要麼Java EE 6 API LibraryJava EE 7 API Library右擊Libraries取決於你使用的版本。
  4. 點擊Import Library按鈕
  5. 選擇剛剛導入的庫並按Add Library按鈕。
+1

適合NetBeans IDE 8.0使用:) –

相關問題