मैं कोटलिन Vert.x भाषा समर्थन मॉड्यूल बनाने की कोशिश कर रहा हूं और मुझे कोटलिन फ़ाइलों को संकलित करने और ClassLoader
के साथ परिणामों को लोड करने का एक तरीका चाहिए। मैंने kotlin-compiler
लाइब्रेरी का उपयोग करने का प्रयास किया है और K2JVMCompiler
कक्षा मिली है, लेकिन ऐसा लगता है कि यह exec
विधि के साथ केवल कमांड-लाइन-शैली तर्कों का समर्थन करता है। क्या रनटाइम में कोटलिन फ़ाइल को संकलित करने का कोई तरीका है (संभावित रूप से .class
फ़ाइलों को सहेजने और पढ़ने के बिना) और तुरंत जेनरेट की गई कक्षाएं लोड करें? (Groovy की तरह है।) यदि नहीं, तो क्या आपके पास कोई उपयोगी कंपाइलर तर्क सुझाव या बहुत अधिक सलाह है?रनटाइम में कोटलिन कोड को संकलित और उपयोग कैसे करें?
उत्तर
यह XY Problem जैसा लगता है। आप जानना चाहते हैं कि कोटलिन को फ्लाई पर कैसे संकलित करना है ताकि आप संकलित कोड के बजाय कोटलिन स्रोत फ़ाइलों से चलकर Vert.x का अधिक आसानी से उपयोग कर सकें। लेकिन वास्तव में Vert.x उपयोग के लिए अनुशंसित पथ कोड का एक साधारण बिट बनाना है जो आपके ऊर्ध्वाधर को संकलित कोड के भीतर तैनात करता है।
सवाल में, भाषा समर्थन के लिए अपने लिंक पथ "vertx.io/ vertx2 /language_support.html" में Vert.x 2 कहते हैं; जो अब Vert.x 3 में किया गया है उससे अलग है। मुझे लगता है कि आप दो विचारों को विलय कर रहे हैं। सबसे पहले कि Vert.x 3 चाहता है कि आप स्रोत से जावा/कोटलिन फ़ाइलों को चलाएं (यह वास्तव में नहीं है; वह एक वर्ट.एक्स 2 चीज थी जिसे वे संकलित भाषाओं) से दूर ले गए थे, और दूसरा आपको कस्टम भाषा समर्थन की आवश्यकता है (आप नहीं हैं)।
आपको संकलित कोड चलाकर Vert.x 3 का उपयोग करने का प्रयास करना चाहिए। ऐसा करने के लिए, अपनी कक्षाएं बनाएं और अपना खुद का main()
चलाएं जो deploys a verticle programatically है। आपका कोड होगा सरल रूप में:
import io.vertx.core.Vertx
fun main(args: Array<String>) {
val vertx = Vertx.vertx()
vertx.deployVerticle(SomeVerticleOfMine())
}
वैकल्पिक रूप से, docs for running and deploying from the command-line कहते हैं:
Vert.x चलाने से पहले फ्लाई पर जावा स्रोत फ़ाइल संकलित कर देगा। यह वास्तव में लंबवत प्रोटोटाइप और डेमो के लिए महान के लिए उपयोगी है। एक मेवेन या ग्रैडल सेट अप करने की आवश्यकता नहीं है पहले जाने के लिए!
और वास्तव में यह वास्तव में प्रोटोटाइप और त्वरित परीक्षण के लिए है, और यह आपके आईडीई को समान करने और संकलित कक्षाओं से चलने से कहीं अधिक तेज़ नहीं है। इसके बाद भी आपके पास आईडीई की डीबगिंग सुविधाएं होती हैं जो असीम रूप से मूल्यवान होती हैं।
Vert.x साथ Kotlin प्रयोग करने के लिए कुछ हेल्पर लाइब्रेरी के लिए, इन विकल्पों को देखने के:
- Vert.x 3 module for Klutter - मैं लेखक हूँ, मेरी पुस्तकालयों
- Vert.x 3 helpers for Kotlin में से एक - द्वारा Cy6erGn0m
- Kovert, a REST framework for Vert.x 3 - मैं लेखक हूं, मेरी पुस्तकालयों में से एक
- Vert.x nubes - कोटलिन विशिष्ट नहीं है, लेकिन JVM भाषाओं के लिए Vert.x-Web मित्रवत बनाता है।
एक full sample project of running Vert.x + Kovert (विशेष रूप से App class के साथ शुरू) नहीं है। आप कोवर्ट के कोड को वार्म.एक्स को शुरू करने और चलाने के अपने स्वयं के समान काम करने के लिए देख सकते हैं, वादे के साथ या फिर आप चाहें। कोवर्ट के दस्तावेज़ों में starting Vertx और starting a Verticle to use Vert.x-Web के लिए कोड के लिंक हैं, इसलिए आप जितना अधिक नमूना कोड पढ़ सकते हैं। लेकिन यह पूर्ण नमूना को समझने के लिए Injekt (हल्के वजन निर्भरता रजिस्ट्री), Kovenant (वादा लाइब्रेरी), और Klutter configuration injection को समझने में मदद करता है।
अन्य त्वरित नोट, Vert.x में अन्य भाषाओं के लिए कोडेजन समर्थन है, लेकिन चूंकि आप सीधे जावा संस्करण को कॉल कर सकते हैं, इसलिए इसे कोटलिन का समर्थन करने की आवश्यकता नहीं है।
आप सही हैं। प्रलेखन भ्रमित करने वाला है (पुराने तरीकों को नए लोगों के साथ मिलाकर), लेकिन मुझे लगता है कि यह परिपक्व ढांचे की एक आम समस्या है। मैंने आपका जवाब स्वीकार कर लिया क्योंकि यह मेरी विशेष समस्या हल करता है। – JustACluelessNewbie
हां, यह संभव है। कोड के उदाहरण के लिए आप Kotlin codegen tests देख सकते हैं जो ऐसा करता है। (ध्यान दें कि यह कोटलिन के स्थिर एपीआई का हिस्सा नहीं है, और अक्सर बदलता रहता है।)
उह, मैं इस एपीआई के साथ संघर्ष कर रहा हूं कि ऑब्जेक्ट का एक उदाहरण शुरू करने का प्रयास करें (मुझे लगता है) जो मुझे करने की ज़रूरत है। 'जेनरेटेड क्लासलोडर' के लिए मुझे 'क्लासफाइल फैक्टरी' की आवश्यकता है। इसे शुरू करने के लिए मैं 'क्लासबिल्डर फ़ैक्टरीज़' बिनरीज़ 'का उपयोग कर रहा हूं और मैं' जेनरेशनस्टेट 'बनाने की कोशिश कर रहा हूं, लेकिन ईमानदारी से - मैं वहां फंस गया हूं। कन्स्ट्रक्टर में 19 चर कुछ ऐसा नहीं है जो आप रोज़ाना मिलते हैं। यह बहुत अच्छा है कि यह सभी 'कोटलिन-कंपाइलर' lib में उपलब्ध है, लेकिन इसे कुछ दस्तावेज की जरुरत है। क्या आप मौजूदा एपीआई का उपयोग कर कोड जनरेशन पर्यावरण स्थापित करने का एक उदाहरण पोस्ट करना चाहते हैं? – JustACluelessNewbie
@yole, कोटली कोडेजन परीक्षणों का लिंक टूटा हुआ है – bennyl
मैंने लिंक अपडेट किया है। – yole
कोटलिन 1.1 javax.script (JSR-223) समर्थन के साथ आता है, जिसका अर्थ है कि आप इसे नैशर्न के साथ जावास्क्रिप्ट के समान स्क्रिप्टिंग इंजन के रूप में उपयोग कर सकते हैं।
- 1. ग्रोवी और कोटलिन संकलित करें?
- 2. रनटाइम पर स्कैला कोड को संकलित और निष्पादित करें
- 3. रनटाइम पर सी # कोड एक्सटेंशन संकलित करें
- 4. रनटाइम पर स्कैला अभिव्यक्ति को संकलित/eval कैसे करें?
- 5. जावास्क्रिप्ट को संकलित करने के लिए कोटलिन
- 6. कोटलिन में, क्या रनटाइम में प्रतिनिधिमंडल को बदलना संभव है?
- 7. कोड को गतिशील रूप से संकलित और निष्पादित कैसे करें?
- 8. जावास्क्रिप्ट में जावा स्रोत कोड को कैसे क्रॉस-संकलित करें?
- 9. ग्राडल प्रोजेक्ट में कोटलिन के बाइट कोड संस्करण को जावा 8 में कैसे सेट अप करें?
- 10. जावा में रनटाइम पर ग्रोवी क्लास संकलित करें
- 11. stdin से कोड कैसे संकलित करें?
- 12. रनटाइम पर निष्पादन योग्य कोड में कोड
- 13. जावा में कोटलिन साथी ऑब्जेक्ट का उपयोग कैसे करें?
- 14. pthreads में openmp संकलित करें सी कोड
- 15. कोड में एंड्रॉइड मार्शमॉल रनटाइम अनुमतियों को कैसे ढूंढें?
- 16. ओपनसीएल को पीटीएक्स कोड में संकलित करने के लिए क्लैंग का उपयोग कैसे करें?
- 17. रनटाइम के बाद क्वार्ट्ज नौकरी स्क्रिप्ट संकलित?
- 18. कोटलिन में गेटर्स और सेटर्स
- 19. कोडेडॉम संकलित कोड में डीबग/ब्रेक कैसे करें
- 20. क्या .NET में रनटाइम पर नया कोड संकलित और निष्पादित करना संभव है?
- 21. कोटलिन लक्षण और रेट्रोफिट
- 22. ब्राउज़र में टाइपस्क्रिप्ट को संकलित कैसे करें?
- 23. कोटलिन में स्वैगर @ एपी रीस्पॉन्स एनोटेशन का उपयोग कैसे करें?
- 24. कोटलिन
- 25. मैं संकलित सी कोड के साथ सी ++ कोड संकलित और लिंक कैसे करूं?
- 26. कोटलिन एसएएम रनटाइम त्रुटि: NoSuchMethodError: कोई स्थिर विधि
- 27. मैं कोटलिन कोड के आरेख और यूएमएल कैसे उत्पन्न करूं?
- 28. ngen.exe के साथ कैसे संकलित करें और जेनरेट किए गए देशी कोड को कैसे चलाएं?
- 29. वेबपैक विक्रेताओं डीएलएल में बेबेल-रनटाइम को 'स्थानांतरित' कैसे करें?
- 30. कैसे सी # में असुरक्षित कोड को संकलित करने के
यह वर्टेक्स 2 के लिए है? वर्टेक्स 3 के लिए आप ऐसा कुछ नहीं करेंगे। –
@ जेसन मॉनार्ड, मुझे पूरा यकीन है कि यह Vert.x 3 है: https://github.com/vert-x3/vertx-lang-groovy/blob/master/src/main/groovy/io/vertx/lang/ groovy/groovyVerticleFactory.groovy मुझे पता है कि आप पूरी तरह से .class फ़ाइलों का उपयोग कर सकते हैं और सामान्य कोटलिन संकलन पर भरोसा कर सकते हैं, लेकिन यदि आप सादा छोड़ सकते हैं तो यह बहुत लचीला होगा। कोटलिन फाइलें और Vert.x यह जान लेंगे कि इसे कैसे चलाया जाए। मैं अभी भी ढांचे के लिए नया हूं (बस इसे मिला), तो शायद मैं सादे Vert.x पुस्तकालयों (और एम्बेडेड Vert.x) का उपयोग कर समाप्त हो जाएगा और देखें कि यह कैसे चला जाता है। – JustACluelessNewbie
मुझे लगता है कि यह एक एक्सवाई समस्या (http://xyproblem.info/) है, इसलिए मैंने जो जवाब दिया है, उसका उत्तर दिया गया है यदि आपने वाई –