2012-09-06 17 views
9

में javac के साथ संकलित करते समय मैं जेएसएफ सीखने के लिए अपना पहला कदम बना रहा हूं। मुझे "कोर जावासेवर फेस थर्ड एडिशन" नामक इस रोचक पुस्तक मिली। http://horstmann.com/corejsf/:"पैकेज javax.inject मौजूद नहीं है" त्रुटि कमांडलाइन

पहला उदाहरण संकलित करने के लिए कोशिश कर रहा है, तो आप से स्रोत कोड डाउनलोड कर सकते हैं। मैं कमांड लाइन

javac UserBean.java 

पर निम्न लिखें जब मैं त्रुटियों मिल:

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

मैं जावा ईई, चींटी और ग्लासफिश डाउनलोड किया है।

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> 

कैसे पिछले सप्ताह के लिए लेकिन उपयोगी कुछ भी बिना एक जावा ईई आवेदन संकलित करने के लिए googling गया:

यहाँ मेरी कमांड लाइन की एक तस्वीर है।

किसी ने मुझे इस के साथ मदद कर सकते हैं तो कृपया, मैं हल करने के लिए इस इसलिए मैं अपने काम JSF जानने के लिए आगे बढ़ सकते हैं की जरूरत है।

एसपी: मैं नेटबीन के साथ अपनी जावा ईई परियोजनाओं को संकलित करने के लिए आगे बढ़ने से पहले जावा ईई अनुप्रयोगों को नंगे हाथों को संकलित करना सीखना चाहता हूं। मैं पहले ग्लासफ़िश के साथ काम करना सीखना पसंद करता हूं तो शायद बाद में मैं टॉमकैट पर विचार करूंगा।

एक और सवाल; मेरे अनुप्रयोगों को तैनात करने के लिए जावा ईई और ग्लासफ़िश सर्वर का उपयोग करने के बीच क्या अंतर है?

+0

सुनिश्चित करें कि आप जेएसएफ 2.x और ग्लासफ़िश 3.x या अन्य जावा ईई 6 वेब अनुप्रयोग सर्वर का उपयोग कर रहे हैं और आपकी परियोजना आपके ग्लासफ़िश पुस्तकालयों का संदर्भ दे रही है। –

उत्तर

10

आप JAR संकलन समय classpath में उन वर्गों युक्त फ़ाइल को शामिल करने की जरूरत है।

ग्लासफिश सर्वर के साथ अपने विशेष मामले में, कि /glassfish/lib/javaee.jar है। आप कमांड के -cp (या -classpath) तर्क के रूप में क्लासपाथ निर्दिष्ट कर सकते हैं। यह डिस्क फ़ाइल सिस्टम पथों की अर्धविरोधी स्ट्रिंग है जो जेएआर फाइलों और/या क्लास फ़ोल्डर्स को इंगित करती है जिन्हें संकलित समय क्लासपाथ में शामिल किया जाना चाहिए।

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

javac तो में वहाँ दिखेगा एक बार यह एक अज्ञात वर्ग जो import द्वारा संदर्भित है का सामना करना पड़ता है, ताकि यह दूसरों के बीच में अगर आप इसे सही तरीके से इस्तेमाल किया पुष्टि कर सकते हैं।

यह जावा ईई के साथ तकनीकी रूप से कुछ भी नहीं है। यह सिर्फ मूल जावा है। मैं जावा ईई में गोता लगाने से पहले सीखने का सुझाव दूंगा।

मामले में आप एक IDE का उपयोग कर रहे हैं, तो यह "के रूप में लक्षित रनटाइम" परियोजना के लिए लक्ष्य सर्वर संलग्न की बस एक बात है। आईडीई स्वचालित रूप से बिल्ड पथ (संकलन समय क्लासपाथ) के रूप में सभी जादू करेगा।

8

NetBeans 7.3 आप सही पुस्तकालयों पर क्लिक कर सकते हैं में परियोजना दर्शक में फ़ोल्डर, सूची से 'जावा ईई 6 एपीआई पुस्तकालय' 'पुस्तकालय जोड़ें' और फिर विकल्प चुनें।

+0

क्या होगा यदि मैं Netbeans 7.3 का उपयोग नहीं करता ..? – NREZ

+0

@NREZ मुझे यकीन है कि ग्रहण की एक समान कार्यक्षमता है। यह जार जोड़ने का एक आसान तरीका है। – Thufir

2

नेटबीन आईडीई 8.0 में यह संस्करण 7 के लिए ऊपर वर्णित से थोड़ा अलग है।3

  1. सही जावा ईई अपनी परियोजना
  2. करें Import...
  3. चुनें या तो Java EE 6 API Library या Java EE 7 API Library में Libraries पर क्लिक संस्करण उपयोग कर रहे हैं पर निर्भर करता।
  4. Import Library बटन
  5. लाइब्रेरी का चयन करें जिसे आपने अभी आयात किया है और Add Library बटन दबाएं।
+1

नेटबीन आईडीई 8.0 के लिए ठीक काम किया :) –

संबंधित मुद्दे