2011-02-26 19 views
6

का उपयोग कर जावा स्रोत को संकलित करने में समस्या मैं सी स्रोत और हेडर फाइलों (एएच) को पार्स करने के लिए कमांड लाइन से एएनटीएलआर सी व्याकरण फ़ाइल (DummyC.g) चलाने की कोशिश कर रहा हूं। जब मैं antlr.jar फ़ाइल के साथ इसे चलाता हूं, तो यह पार्सर और लेक्सर फ़ाइलों को उत्पन्न करता है। लेकिन जब मैं परीक्षण फ़ाइल Main.java संकलित करता हूं। यह नीचे दिखाए गए एएनटीएलआर पैकेजों की गलती देता है।एएनटीएलआर v3

C: \ antlr-2.7.6 \ test> javac Main.java

Main.java:1: पैकेज org.antlr.tool मौजूद नहीं है आयात org.antlr.tool। ;
^ मुख्य.जावा: पैकेज org.antlr.runtime मौजूद नहीं है आयात org.antlr.runtime आयात करें।
;
^ Main.java:3: पैकेज org.antlr.runtime.tree मौजूद नहीं है आयात org.antlr.runtime.tree आयात करें। ;
^ मुख्य.जावाश: पैकेज org.antlr.stringtemplate मौजूद नहीं है आयात org.antlr.stringtemplate आयात करें।
;
^ Main.java:8: नहीं मिल रहा है प्रतीक प्रतीक: वर्ग CommonTree स्थान: कक्षा मुख्य CommonTree पेड़ = DummyCParser.start ("a.h");

Main.java

import org.antlr.tool.*; 
import org.antlr.runtime.*; 
import org.antlr.runtime.tree.*; 
import org.antlr.stringtemplate.*; 

public class Main { 
    public static void main(String[] args) throws Exception { 
     CommonTree tree = DummyCParser.start("a.h");  
     DOTTreeGenerator gen = new DOTTreeGenerator(); 
     StringTemplate st = gen.toDOT(tree);  
     System.out.println(st); 
     } 
} 

क्या समस्या हो सकती है?

+0

आप ग्रहण या इंटेलिजे जैसी निःशुल्क आईडीई क्यों डाउनलोड नहीं करते हैं, यह आपको दृष्टि से देखने में मदद करेगा जहां समस्याएं हैं। इस मामले में आपको संकलित करते समय क्लासपाथ पर प्रासंगिक जार के स्थान को संदर्भित करने की आवश्यकता है। –

+0

'antlr-2.7.6' ??? –

+0

इसके अलावा, मैंने पहले आपको कक्षाओं को संकलित करने के तरीके को देखने के लिए अपने अन्य एएनटीएलआर उत्तरों से गुज़रने की सिफारिश की थी, लेकिन मैंने इसे संकलित करने का सुझाव नहीं दिया जैसा कि आप अभी करने की कोशिश कर रहे हैं। –

उत्तर

6

आप एंटीलर रनटाइम का उपयोग कर रहे हैं, इसलिए आपको क्लासपाथ के हिस्से के रूप में एंटीलर जार फ़ाइलों को निर्दिष्ट करना होगा ताकि संकलक आपके द्वारा उपयोग किए जाने वाले एंटरलर क्लास को ढूंढ सके।

javac -classpath c:\java\antlr-3.3\lib\antlr-3.3-complete.jar Main.java 
+0

मेरे पास एक ही फ़ोल्डर में जार फ़ाइल है जिसमें स्रोत और परीक्षण फ़ाइल है। क्या यह काम नहीं करना चाहिए? मुझे लगता है कि केवल जार फ़ाइल की जरूरत है। या क्लासपाथ को शामिल करना आवश्यक है? – user628127

+0

आपको अभी भी एंटरर जार के पथ को निर्दिष्ट करने की आवश्यकता है। बेहतर दृष्टिकोण - मेवेन के बारे में जानें और एक विचार का उपयोग करें। या यहां तक ​​कि कमांड लाइन से सिर्फ maven। http://www.sonatype.com/books/maven-book/ इसके अलावा: www.eclipse.org –

+0

मैंने क्लासपाथ दिया लेकिन फिर भी वही त्रुटि सी: \ antlr-2.7.6 \ test> javac -classpath c: \ ANTLR -3.2 \ antlr-3.2.jar Main.java Main.java:1: पैकेज org.antlr.tool मौजूद नहीं है आयात org.antlr.tool। *; ^ मेन.जावा: पैकेज org.antlr।रनटाइम मौजूद नहीं है आयात org.antlr.runtime आयात करें। *; ^ – user628127

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