2012-09-06 49 views
9

Tôi đang thực hiện các bước đầu tiên để học JSF. Tôi tìm thấy cuốn sách thú vị này được gọi là "Core JavaServer Faces Third Edition".Lỗi "gói javax.inject không tồn tại" khi biên dịch với javac trong dòng lệnh

Cố gắng biên dịch ví dụ đầu tiên, bạn có thể tải xuống mã nguồn từ: http://horstmann.com/corejsf/. Khi tôi gõ như sau vào dòng lệnh

javac UserBean.java 

tôi nhận được lỗi:

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

Tôi đã tải Java EE, Ant và GlassFish.

Dưới đây là một cái búng dòng lệnh của tôi:

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> 

Được googling làm thế nào để biên dịch một ứng dụng Java EE trong tuần cuối cùng nhưng không có bất cứ điều gì hữu ích.

Ai đó có thể giúp tôi với điều này không, tôi cần giải quyết vấn đề này để tôi có thể tiến lên trong nhiệm vụ của mình để tìm hiểu JSF.

S.P: Tôi muốn tìm hiểu cách biên dịch các ứng dụng Java EE trước khi chuyển sang biên dịch các dự án Java EE của tôi với NetBeans. Tôi thích học cách làm việc với GlassFish trước rồi có lẽ sau này tôi sẽ xem xét Tomcat.

Một câu hỏi khác; sự khác nhau giữa việc sử dụng Java EE và máy chủ GlassFish để triển khai các ứng dụng của tôi là gì?

+0

Đảm bảo bạn đang sử dụng JSF 2.x và GlassFish 3.x hoặc một Máy chủ ứng dụng web Java EE 6 khác và dự án của bạn đang tham chiếu thư viện GlassFish của bạn. –

Trả lời

10

Bạn cần bao gồm tệp JAR chứa các lớp đó trong đường dẫn lớp thời gian biên dịch.

Trong trường hợp cụ thể của bạn với máy chủ GlassFish, đó là /glassfish/lib/javaee.jar. Bạn có thể chỉ định đường dẫn lớp như đối số -cp (hoặc -classpath) của lệnh javac. Nó là một chuỗi semicolonseparated của các đường dẫn hệ thống tệp đĩa trỏ đến các tệp JAR và/hoặc các thư mục lớp nên được bao gồm trong đường dẫn lớp thời gian biên dịch.

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

javac sau đó sẽ xem xét trong đó một lần nó gặp một lớp vô danh mà được tham chiếu bởi import, để nó có thể xác minh số những người khác nếu bạn sử dụng nó một cách đúng đắn.

Điều này về mặt kỹ thuật không liên quan gì đến Java EE. Đây chỉ là Java cơ bản. Tôi khuyên bạn nên tìm hiểu điều đó trước khi đi sâu vào Java EE.

Trong trường hợp bạn đang sử dụng một IDE, thì đó chỉ là vấn đề gắn máy chủ mục tiêu là "Thời gian chạy đích" cho dự án. Sau đó, IDE sẽ tự động thực hiện tất cả phép thuật theo đường dẫn xây dựng (đường dẫn lớp thời gian biên dịch).

8

Trong netbeans 7.3 bạn có thể nhấp chuột phải vào thư mục thư viện trong trình xem dự án, chọn tùy chọn 'thêm thư viện' và sau đó chọn 'Thư viện API Java EE 6' từ danh sách.

+0

Nếu tôi không sử dụng Netbeans 7.3 .. thì sao? – NREZ

+0

@NREZ Tôi chắc chắn Eclipse có chức năng tương tự. Nó chỉ là một cách dễ dàng để thêm JAR. – Thufir

2

Trong NetBeans IDE 8.0, nó hơi khác so với mô tả ở trên cho phiên bản 7.3

  1. Nhấp chuột phải vào Libraries trong Java EE dự án của bạn
  2. Chọn Import...
  3. Chọn một trong hai Java EE 6 API Library hoặc Java EE 7 API Library tùy thuộc vào phiên bản bạn đang sử dụng.
  4. Nhấp vào nút Import Library
  5. Chọn thư viện bạn vừa nhập và nhấn nút Add Library.
+1

Làm việc tốt cho NetBeans IDE 8.0 :) –

Các vấn đề liên quan