2011-05-18 14 views
6

मेरे पास एक परिदृश्य है जहां मेरा एप्लिकेशन चल रहा है जब मुझे जावा कोड जेनरेट करना होगा।रन कोड पर जावा कोड उत्पन्न करना, संकलन करना और उपयोग करना?

मेरे आवेदन से कोड (एक अलग आवेदन के रूप में) संकलित और चला सकते हैं।

क्या संकलन करना संभव है और फिर उसी एप्लिकेशन से इसका उपयोग करना संभव है। नहीं कर सकते किसी भी संभावना

उत्तर

2

के बारे में सोच ProcessBuilder का उपयोग कर या Runtime.exec() आप अपने जावा कोड

इस javac संकलक और एक अलग प्रक्रिया के रूप में जावा

+0

जब MyCompilingUtility.java, जो calls'Runtime # कार्यकारी() '' चल javac MyFile.java' की एक पैरामीटर जहां '' MyFile.java' के माध्यम से बनाया गया था 'MyCompilingUtility.java', मैं डॉन द्वारा PrintWriter' साथ 'MyFile.java' के लिए जेनरेट की गई 'क्लास' फ़ाइल नहीं दिखाई दे रही है। यही कारण है कि? –

+1

जावैक के त्रुटि आउटपुट की जांच करें, जावैक काम करता है कि कामकाजी निर्देशिका उस वर्ग का मूल पैकेज हो जो –

+0

संकलित कर रही है, धन्यवाद, @ratchet freak। आपके सहायक सुझाव पर विस्तृत करने के लिए सॉटिरियोस डेलिमैनोलिस की टिप्पणी पोस्ट करना - http://stackoverflow.com/questions/21580975/using-runtimeexec-with-javac-no-class-file/21581168?noredirect=1#comment32600305_21581168 –

5

आप JavaCompiler का एक उदाहरण का उपयोग कर सकते शामिल से किसी भी कमांडलाइन एप्लिकेशन चला सकते हैं :

JavaCompiler compiler = ToolProvider.getSystemJavaCompiler(); 

इसका उपयोग कैसे करें इसके उदाहरण के लिए लिंक का पालन करें।

+1

ध्यान दें कि आपको आवश्यकता होगी काम करने के लिए एक जेडीके। जेआरई इंस्टॉल में एक कंपाइलर शामिल नहीं है। –

+0

अच्छा बिंदु Thorbjørn। यदि वह इस विकल्प को चुनता है, तो उसके आवेदन के लिए न्यूनतम आवश्यकता ** जेडीके 6 ** होगी। – iruediger

+0

जेआरई 7 ने javax.tools.ToolProvider को rt.jar में सही रखा है। हालांकि मैंने इसका परीक्षण नहीं किया है, मैं 'jdk1.7.0_05/jre/lib/rt.jar' में देखता हूं: ' javax/tools/JavaCompiler.class' और 'javax/tools/ToolProvider.class' – karmakaze

9

Create dynamic applications with javax.tools देखें। दूसरी बार मैंने आज इसका संदर्भ दिया है - मैं कसम खाता हूं कि मैं उनके लिए काम नहीं करता हूं।

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