2012-09-06 14 views
9

Robię moje pierwsze kroki w kierunku uczenia się JSF. Znalazłem tę interesującą książkę zatytułowaną "Core JavaServer Faces Third Edition"."pakiet javax.inject nie istnieje" błąd podczas kompilacji z javac w linii poleceń

Próbując skompilować pierwszy przykład, możesz pobrać kod źródłowy z: http://horstmann.com/corejsf/. Kiedy wpisz następujące polecenie w wierszu polecenia

javac UserBean.java 

pojawiają się błędy:

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

Pobrałem Java EE, Ant i GlassFish.

Oto przystawki mojego wiersza poleceń:

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> 

Been googlowania jak skompilować aplikację Java EE dla ostatniego tygodnia, ale bez niczego użytecznego.

Czy ktoś mi w tym pomoże, proszę, muszę rozwiązać ten problem, abym mógł przejść do przodu w moim zadaniu, aby nauczyć się JSF.

S.P: Chcę nauczyć się kompilować aplikacje Java EE gołe ręce przed przejściem do kompilacji moich projektów Java EE z NetBeans. Wolę nauczyć się pracy z GlassFish najpierw, być może później rozważę Tomcat.

Jeszcze jedno pytanie; Jaka jest różnica między używaniem Java EE a serwerem GlassFish do wdrażania moich aplikacji?

+0

Upewnij się, że używasz JSF 2.x i GlassFish 3.x lub innego serwera aplikacji WWW Java EE 6, a Twój projekt odwołuje się do bibliotek GlassFish. –

Odpowiedz

10

Musisz załączyć plik JAR zawierający te klasy w ścieżce klas czasu kompilacji.

W konkretnym przypadku z serwerem GlassFish jest to /glassfish/lib/javaee.jar. Można określić ścieżkę klasy jako -cp (lub) argument polecenia javac. Jest to łańcuch półprzewodnikowych ścieżek systemowych plików dyskowych wskazujących na pliki JAR i/lub foldery klas, które powinny być zawarte w ścieżce klas czasu kompilacji.

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

javac będzie wtedy wyglądać tam raz napotka nieznaną klasę, która odwołuje się import, tak aby mogła ona między innymi zweryfikować, jeśli użył go we właściwy sposób.

To technicznie nie ma nic wspólnego z Java EE. To tylko podstawowa Java. Proponuję się tego nauczyć przed nurkowaniem w Java EE.

Jeśli używasz IDE, to tylko kwestia przyłączenia serwera docelowego jako "Ukierunkowanego środowiska wykonawczego" do projektu. IDE automatycznie zrobi całą magię na ścieżce budowania (ścieżka klasy kompilacji).

8

W netbeans 7.3 można kliknąć prawym przyciskiem myszy folder bibliotek w przeglądarce projektu, wybrać opcję "dodaj bibliotekę", a następnie wybrać "Biblioteka Java EE 6 API" z listy.

+0

Co zrobić, jeśli nie używam Netbeans 7.3 ..? – NREZ

+0

@NREZ Jestem pewien, że Eclipse ma podobną funkcjonalność. To po prostu łatwy sposób dodania plików JAR. – Thufir

2

W NetBeans IDE 8.0 jest nieco inny niż opisano powyżej dla wersji 7.3

  1. prawym przyciskiem myszy na Libraries w Java EE swój projekt
  2. Wybierz Import...
  3. Wybierz jedną Java EE 6 API Library lub Java EE 7 API Library w zależności od wersji, której używasz.
  4. Kliknij przycisk Import Library
  5. Wybierz bibliotekę, którą właśnie zaimportowano i naciśnij przycisk Add Library.
+1

Dobrze działa dla NetBeans IDE 8.0 :) –