2013-06-06 10 views
5

मैं जेडीटी का उपयोग अपने जावा वर्गों को संकलित करने के। बैचकंपेलर एक स्ट्रिंग देता है लेकिन मुझे अपने कॉलम और पंक्ति की जानकारी के साथ समस्याओं/त्रुटियों की एक सरणी की आवश्यकता होती है। compiler.compile (यूनिट); त्रुटि को अपने प्रिंटराइटर में प्रिंट करता है, compiler.resolve (इकाई) ठीक वही करता है जो मैं चाहता हूं लेकिन यह केवल एक जावा फ़ाइल संकलित कर सकता है।मैं जेडीटी कंपाइलर प्रोग्रामेटिक रूप से कैसे उपयोग कर सकता हूं?

मैं इस तरह से एक संकलक वस्तु बनाया:

Compiler compiler = new Compiler(env, DefaultErrorHandlingPolicies.exitAfterAllProblems(), new CompilerOptions(), requestor, new DefaultProblemFactory()); 

और CompilationUnits कि संकलक करने के लिए फ़ाइल नाम और फ़ाइल सामग्री शामिल पैदा करते हैं।

CompilationUnit[] units = project.toCompilationUnit(); 

AFAIK, वहाँ 2 तरीके संकलित करने के लिए कर रहे हैं, उनमें से एक (यूनिट) विधि है कि इसके PrintWriter को शून्य और प्रिंट त्रुटियों और समस्याओं रिटर्न संकलन है, क्योंकि यह स्तंभ जानकारी वापस नहीं करता है यह मेरे लिए उपयोगी नहीं है है । दूसरा तरीका संकल्प (इकाई) विधि है लेकिन यह केवल एक संकलन के साथ काम कर सकता है।

compiler.resolve(units[index], true, true, true); 

क्या कोई जानता है कि मैं एकाधिक फ़ाइलों को संकलित करने के लिए प्रोग्रामेटिक रूप से जेडीटी कंपाइलर का उपयोग कैसे कर सकता हूं?

+0

वहाँ CompilationUnits के माध्यम से पाशन और 'resolve' बुला में किसी भी समस्या है। –

+0

@UnniKris यह काम करता है लेकिन जैसा कि मैंने कहा कि संकल्प केवल एक संकलन यूनीट पैरामीटर लेता है। लूपिंग हालांकि CompilationUnits क्योंकि मैं एक परियोजना कई जावा फ़ाइलें एक दूसरे पर निर्भर है और एक CompilationUnit अन्य CompilationUnits बारे में कोई जानकारी नहीं है शामिल है कि संकलित करने के लिए कोशिश कर रहा हूँ [] समस्या का समाधान नहीं है। –

उत्तर

0

org.eclipse.jdt.internal.compiler.Compiler आंतरिक एपीआई है। Internal API used to resolve a given compilation unit. Can run a subset of the compilation process: अपनी resolve विधि के JavaDoc के अनुसार।

इसके बजाय, जावा फ़ाइलें संकलन और संकलन समस्याओं का निर्धारण करने का आधिकारिक रास्ता here वर्णन किया गया है। असल में, आप एक जावा प्रोजेक्ट बनाते हैं और उस पर एक्लिप्स के निर्माता का आह्वान करते हैं, फिर प्रोजेक्ट की जावा समस्या मार्कर से पूछताछ करें।

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

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