2016-03-27 1 views
6

में कोटलिन कंपाइलर का आउटपुट फ़ोल्डर एक्लिप्स में जेटब्रेन कोटलिन कंपाइलर एक्लिप्स कंपाइलर प्लगइन के अंदर एक छिपे हुए फ़ोल्डर में आउटपुट करता है। यह छुपा फ़ोल्डर तब ग्रहण कोटलिन क्लासपाथ कंटेनर के माध्यम से उपलब्ध कराया जाता है।ग्रहण

bndtools में हमें एक सामान्य फ़ाइल सिस्टम फ़ोल्डर की आवश्यकता होती है क्योंकि बीएनडी फाइल सिस्टम के साथ-साथ ग्रहण में भी चला सकता है। चूंकि फ़ोल्डर एक लिंक संसाधन है, इसलिए ग्रहण के बाहर इसका अनुवाद करने का कोई ज्ञात तरीका नहीं है।

कोई भी जानता है कि कोटलिन कंपाइलर को बिन फ़ोल्डर में आउटपुट करने के लिए कैसे बताना है?

उत्तर

3

वर्तमान में, कोटलिन ग्रहण प्लगइन में यह संभव नहीं है।

यह संभव बनाने के लिए कि कोटलिन कोड जावा से उपयोग किया जा सकता है, कोटलिन प्लगइन इस फ़ोल्डर में तथाकथित हल्के वर्ग फ़ाइलों का उत्पादन करता है। इन वर्ग फ़ाइलों में विधियों के लिए निकायों नहीं होते हैं और वे स्मृति में संग्रहीत होते हैं।

वास्तविक वर्ग फ़ाइलों, जिनका उपयोग अनुप्रयोग चलाने के लिए किया जाता है, केवल लॉन्च से पहले बनाए जा रहे हैं और उन्हें डिफ़ॉल्ट आउटपुट फ़ोल्डर में उत्पादित किया जाता है। अभी के लिए, हम प्रत्येक सहेजने पर क्लास फाइलों को उचित रूप से तेज़ नहीं कर सकते क्योंकि plugin में कोई वृद्धिशील संकलन नहीं है: इस समस्या के लिए अपवित्र होने के लिए स्वतंत्र महसूस करें।

+0

धन्यवाद फ़ाइल से compileKotlinFiles के रूप में एक समान तरीके से लपेटा 2. से विधि का उपयोग करें चाहते हैं। बाहर से उन वर्गों के इस निर्माण को ट्रिगर करने का कोई तरीका? –

+0

दुर्भाग्य से, यह अभी भी संभव नहीं है। –

+0

लेकिन आप एप्लिकेशन चला सकते हैं ताकि क्लास फाइलों को पहले से ही जेनरेट किया जाना चाहिए? क्या उन्हें पकड़ने के लिए वास्तव में कोई रास्ता नहीं है? –

1

कोटलिन प्लगइन के कोड के संक्षिप्त विश्लेषण से, ऐसा लगता है कि उचित विधि KotlinCompiler.compileKotlinFiles है। इसे दो संदर्भों में बुलाया जा रहा है:

  1. KotlinBuilder.build - यह परियोजना निर्माण पर आधारित है; यह LaunchConfigurationDelegate से कॉल किया जा रहा है या नहीं, और परिणामों के आधार पर कॉल स्टैक चाल (या बल्कि एक हैक ...) बनाता है, या तो पूरे प्रोजेक्ट को संकलित करता है (अपने निजी मजेदार compileKotlinFiles के माध्यम से), या बस स्मृति में स्टब्स बनाता है।
  2. KotlinCompilerUtils.compileWholeProject - वास्तव में इसे 1 से बुलाया जा रहा है .; अच्छी स्थैतिक विधि, दुरुपयोग के लिए बिल्कुल सही जब तक प्लगइन में समस्या ठीक से हल नहीं हो जाती है। :)

तो, मैं में 1.