2011-08-24 15 views
14

जब मैं ग्रहण में हूँ अपने प्रोजेक्ट कोई त्रुटि के साथ संकलित है, लेकिन जब मैं javac यह कहता है कि मैं कुछ संकुल याद कर रहा हूँ के साथ संकलित करने के लिए प्रयास करें ...जावैक जेएआर फाइल कैसे ढूंढें? (ग्रहण उन्हें देख सकते हैं)

मैं अपने संकलन आदेश की नकल की और नीचे त्रुटि पाठ के कुछ:

javac -classpath lib/ -d bin/ src/*.java 
src/Cleaner.java:5: package net.sourceforge.jgeocoder does not exist 
src/MyUtilities.java:19: package org.apache.commons.codec.binary does not exist 

ग्रहण में, मैं निर्माण पथ के लिए सभी जार फ़ाइलों को शामिल किया है, और कार्यक्रम ठीक संकलित करता है।

जब मैं एक्लिप्स आईडीई के बजाय जावैक का उपयोग करता हूं तो यह जार क्यों नहीं मिल सकता है?

+0

क्योंकि ग्रहण * * जहां देखने के लिए कहा गया था लेकिन :-) कोई जादू यहाँ है javac नहीं था। –

उत्तर

15

-classpath lib/lib में कक्षा फ़ाइलों के पेड़ को देखने के लिए javac का कारण बन जाएगा। और शायद का उपयोग जो कुछ एस्केपिंग तंत्र अपने CLI पर है * यकीन है कि यह javac बजाय CLI

से विस्तार किया जा रहा javac command reference (windows) देखें पहुंचता है बनाने के लिए - तुम वहाँ जार अभिलेखागार है, तो आप -classpath lib/*.jar उपयोग करना होगा।

+0

सही, यह चाल है! धन्यवाद! – theangryhornet

8

मौजूदा उत्तर, जैसा कि जानकारीपूर्ण है, अभी भी मुझे आश्चर्यचकित कर दिया गया है, जिसे जावैक-क्लासपाथ दस्तावेज़ों पर जाना है। यहां आप जो जानना चाहते हैं उसका एक संशोधन यहां दिया गया है:

javac -cp "lib/" Example.javalib/ में सभी .class फ़ाइलों को लोड करेगा।
javac -cp "lib/\*" Example.java सभी .jar फ़ाइलों को lib/ में लोड करेगा, लेकिन .class फ़ाइलें नहीं।
javac -cp "lib/;lib/\*" Example.java सभी .jar और .class फ़ाइलों को lib/ में लोड करेगा।

नोट्स:

  • बच रहा है * (वाइल्डकार्ड) चरित्र के रूप में ऊपर के उदाहरण में प्रयोग किया जाता है (ध्यान दें * से पहले \)। \ बैश के लिए है, यदि आप कुछ और उपयोग कर रहे हैं तो यह अलग हो सकता है। आप इसे बचाना चाहते हैं क्योंकि जावा एसडीके यूटिलिटीज, जैसे javac, वाइल्डकार्ड की व्याख्या करने का अपना तरीका। जहां तक ​​मैं कह सकता हूं (अगर मैं गलत हूं तो मुझे सही करें), विंडोज कमांड लाइन * का विस्तार नहीं करती है, इसलिए आपको इसे से बचने की आवश्यकता नहीं है: -cp lib\* ठीक होना चाहिए।
  • ;javac -cp ".;a/;b/;c/" Example.java में पथ को अलग करता है - यह निम्न निर्देशिकाओं में .class फ़ाइलों को लोड करेगा: वर्तमान निर्देशिका, ए, बी और सी।
  • विभाजक (;) का उपयोग करते समय उद्धरण के साथ कक्षा के आसपास (उदाहरणों की तरह) के आसपास।
संबंधित मुद्दे