दिलचस्प पोस्ट
त्रुटि: पैकेज 'com.google.example' main.xml में विशेषता 'adSize' के लिए कोई संसाधन पहचानकर्ता नहीं मिला पैनल फ़ोकस नहीं हो रहा है आईओएस पर बातचीत / फोन कॉल कैसे रिकॉर्ड कर सकता हूं? कैसे जावास्क्रिप्ट अक्षम है पता लगाने के लिए? जावा में पूर्णांक की श्रेणी C ++ में हेक्स स्ट्रिंग में पूर्णांक अन्य जावास्क्रिप्ट फ़ंक्शन को अग्रेषित करना तर्क इस ऐप के डेवलपर ने फेसबुक ऐप के लिए इस ऐप को ठीक से सेट नहीं किया है? क्यों बिल्कुल eval बुराई है? समान सत्र साझा करने पर एक अन्य वेब एप्लिकेशन को संसाधित करते समय वेब ऐप अवरुद्ध मैं हेक्स स्ट्रिंग से UIColor कैसे बना सकता हूं? क्या क्रोम का जावास्क्रिप्ट कंसोल को सरणी के मूल्यांकन के बारे में आलसी है? सत्र की समाप्ति पर प्राधिकरण का पुनर्निर्देशन JSF फ़ॉर्म सबमिट करने पर काम नहीं करता, तो पृष्ठ एक ही रहता है कैसे दो कमिट के बीच बदल केवल नाम फ़ाइल की सूची है? मैं विंडोज पर कमांड लाइन से जावा प्रोग्राम कैसे चलाऊँ?

पायथन से जावा कॉलिंग

अजगर से जावा को कॉल करने का सबसे अच्छा तरीका क्या है? (जयं और आरपीसी मेरे लिए एक विकल्प नहीं हैं)।

मैंने जेसीसी के बारे में सुना है: http://pypi.python.org/pypi/JCC/1.9 सी ++ / पायथन से जावा को कॉल करने के लिए एक सी ++ कोड जनरेटर लेकिन इसके लिए हर संभावित कॉल संकलित करने की आवश्यकता है; मैं एक और समाधान पसंद करेंगे

मैंने जेपीईपी के बारे में सुना है: http://jpype.sourceforge.net/ ट्यूटोरियल: http://www.slideshare.net/onyame/mixing-python-and-java

import jpype jpype.startJVM(path to jvm.dll, "-ea") javaPackage = jpype.JPackage("JavaPackageName") javaClass = javaPackage.JavaClassName javaObject = javaClass() javaObject.JavaMethodName() jpype.shutdownJVM() 

ऐसा लगता है कि मुझे क्या चाहिए हालांकि, अंतिम रिलीज जनवरी 200 9 से है और मुझे लगता है कि लोग JPype को संकलित करने में विफल रहे।

JPype एक मृत परियोजना है?

क्या कोई अन्य विकल्प हैं?

सादर, डेविड

वेब के समाधान से एकत्रित समाधान "पायथन से जावा कॉलिंग"

यहां इस समस्या का मेरा सारांश है: पायथन से जावा कॉलिंग के 5 तरीके

http://baojie.org/blog/2014/06/16/call-java-from-python/

संक्षिप्त उत्तर: जेपीपीपी बहुत अच्छी तरह से काम करता है और कई प्रोजेक्ट्स (जैसे कि अजगर-बॉयलरपिप) में साबित होता है, लेकिन पीजीएनियस जेपीकीपी की तुलना में तेज और सरल है

मैंने पायजनीस / जेनियस, जे.सी.सी., जवाबि्रिज, जेपीपीई और पाय 4जे की कोशिश की है।

Py4j का उपयोग करने के लिए थोड़ा कठिन है, क्योंकि आपको गेटवे शुरू करने की आवश्यकता है, जिससे कि कमजोरियों की एक और परत जोड़ दी जा सकती है।

आप Py4J का उपयोग भी कर सकते हैं लाइफपेज और बहुत सारे दस्तावेज पर एक उदाहरण है, लेकिन अनिवार्य रूप से, आप अपने अजगर कोड से जावा विधियों को बस कहते हैं जैसे वे अजगर विधियों थे:

 from py4j.java_gateway import JavaGateway gateway = JavaGateway() # connect to the JVM java_object = gateway.jvm.mypackage.MyClass() # invoke constructor other_object = java_object.doThat() other_object.doThis(1,'abc') gateway.jvm.java.lang.System.out.println('Hello World!') # call a static method 

जेथॉन के विरोध में, Py4J का एक भाग पायथन वीएम में चलाता है, इसलिए यह हमेशा "अप टू डेट" है, जो कि अजगर के नवीनतम संस्करण के साथ है और आप लाइब्रेरीज़ का उपयोग कर सकते हैं जो कि जेथॉन (उदाहरण के लिए, एलएक्सएमएल) पर अच्छा नहीं चलते हैं। दूसरा भाग जावा वीएम में कॉल करता है जिसे आप कॉल करना चाहते हैं।

संचार जेएनआई के बजाय सॉकेट के माध्यम से किया जाता है और Py4J का अपना प्रोटोकॉल है (कुछ मामलों को अनुकूलित करने, स्मृति प्रबंधन आदि)

अस्वीकरण: मैं Py4J के लेखक हूँ

Pyjnius।

डॉक्स: http://pyjnius.readthedocs.org/en/latest/

जिथूब: https://github.com/kivy/pyjnius

जिथूब पृष्ठ से:

जेएनआई का उपयोग करते हुए जावा वर्गों को पायथन कक्षाओं के रूप में उपयोग करने के लिए एक पायथन मॉड्यूल।

PyJNIus एक "कार्य प्रगति पर है"

त्वरित अवलोकन

 >>> from jnius import autoclass >>> autoclass('java.lang.System').out.println('Hello world') Hello world >>> Stack = autoclass('java.util.Stack') >>> stack = Stack() >>> stack.push('hello') >>> stack.push('world') >>> print stack.pop() world >>> print stack.pop() hello 

मैं सिर्फ जेपीईपी 0.5.4.2 (जुलाई 2011) का इस्तेमाल करना शुरू कर रहा हूं और ऐसा लगता है कि यह अच्छी तरह से काम कर रहा है …
मैं Xubuntu 10.04 पर हूँ

मैं हाल ही में अजगर में अजगर में कई चीजों को एकीकृत कर रहा हूं। सबसे मजबूत विधि मुझे मिली IKVM और सी # आवरण का उपयोग करना है I

IKVM एक साफ छोटा अनुप्रयोग है जो आपको किसी भी जावा जार को लेने की अनुमति देता है, और इसे सीधे नेट। DLL में परिवर्तित कर सकता है। यह बस सीएलआर बाइटकोड के लिए जेवीएम बाइटकोड का अनुवाद करता है। विवरण के लिए http://sourceforge.net/p/ikvm/wiki/Ikvmc/ देखें।

कनवर्ट लाइब्रेरी केवल एक देशी C # लाइब्रेरी की तरह व्यवहार करती है, और आप इसे JVM की आवश्यकता के बिना उपयोग कर सकते हैं। फिर आप सी # DLL आवरण परियोजना बना सकते हैं, और परिवर्तित DLL के संदर्भ जोड़ सकते हैं।

अब आप कुछ आवरण स्टाब बना सकते हैं जो उन विधियों को कॉल करते हैं जिन्हें आप बेनकाब करना चाहते हैं, और उन विधियों को DllEport के रूप में चिह्नित करें। विवरण के लिए https://stackoverflow.com/a/29854281/1977538 देखें

आवरण डीएलएल एक देशी सी लाइब्रेरी की तरह कार्य करता है, निर्यात सी तरीके की तरह दिखने के तरीके के साथ। आप सीटीईपी का उपयोग सामान्य रूप से कर सकते हैं।

मैंने इसे पायथन 2.7 की कोशिश की है, लेकिन इसे 3.0 के साथ भी काम करना चाहिए। विंडोज और लिनक्सस पर काम करता है

यदि आप सी # का उपयोग करते हैं, तो संभवतः यह सबसे अच्छा तरीका है कि अजगर में लगभग सभी को एकजुट करने का प्रयास किया जाए।

मैं OSX 10.10.2 पर हूं, और JPype का उपयोग करने में सफल हुआ।

Jnius ( दूसरों के पास भी है ) के साथ अधिष्ठापन समस्याओं में भाग लेते हुए, जबाब्रिज ने इंस्टॉल किया, लेकिन जब मैंने इसका इस्तेमाल करने की कोशिश की तो रहस्यमय त्रुटियों को दे दिया, PyJ4 को जावा में एक गेटवे सर्वर शुरू करने की असुविधा है, जे.सी.सी. स्थापित नहीं करेगा। अंत में, जेपीईपी ने काम खत्म कर दिया। गीथूब पर जेपीआईपी के रखरखाव का एक कांटा है । इसका मुख्य लाभ है कि (ए) इसे ठीक से स्थापित किया गया है और (बी) यह बहुत प्रभावी ढंग से जावा एरे को संकीर्ण सरणी में परिवर्तित कर सकता है ( np_arr = java_arr[:] )

स्थापना प्रक्रिया थी:

 git clone https://github.com/originell/jpype.git cd jpype python setup.py install 

और आप import jpype करने में सक्षम होना चाहिए

निम्न डेमो काम किया है:

 import jpype as jp jp.startJVM(jp.getDefaultJVMPath(), "-ea") jp.java.lang.System.out.println("hello world") jp.shutdownJVM() 

जब मैंने अपना जावा कोड कॉल करने की कोशिश की, तो मुझे पहले ( javac ./blah/HelloWorldJPype.java ) संकलित करना पड़ा, और मुझे डिफ़ॉल्ट से जेवीएम पथ को बदलना पड़ा (अन्यथा आपको "क्लास नहीं मिला" त्रुटियों के लिए अव्यवस्थित मिलेगा) । मेरे लिए, इसका मतलब है कि startJVM कमांड को बदलना:

 jp.startJVM('/Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/MacOS/libjli.dylib', "-ea") c = jp.JClass('blah.HelloWorldJPype') # Where my java class file is in ./blah/HelloWorldJPype.class ... 

मैं मान रहा हूँ कि यदि आप सी ++ से जावा तक प्राप्त कर सकते हैं तो आप सभी सेट हैं। मैंने उस तरह के उत्पाद को देखा है, जिसका आपने उल्लेख किया है कि वह अच्छी तरह से काम करता है। जैसा कि हम ऐसा करते थे, यह कोडमैश था। मैं इस विक्रेता की विशेष रूप से पुष्टि नहीं कर रहा हूं या अपने उत्पाद की रिश्तेदार गुणवत्ता के बारे में कोई बयान नहीं कर रहा हूं, लेकिन मैंने इसे बहुत अधिक मात्रा परिदृश्य में देखा है।

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

अजगर कोड के भीतर अजगर कोड कैसे चलाता है, मैं अजथाइया विधि के भीतर से कुछ जावा कोड को चलाने की कोशिश में अपने स्वयं के अनुभव के माध्यम से, मैं एक सीधे आगे की पद्धति खोजने में असमर्थ था।

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

यदि मैं किस बारे में बात कर रहा हूं तो किसी भी तरह से मददगार होता है, तो मुझे खुशी है कि आप अपने समाधान के बारे में अधिक जानकारी साझा कर सकते हैं।

यदि आप पायथन 3 में हैं, JPype का एक दोराहे JPype1-py3 नामक है

 pip install JPype1-py3 

यह मेरे लिए OSX / Python 3.4.3 पर काम करता है। (आपको export JAVA_HOME=/Library/Java/JavaVirtualMachines/your-java-version करना पड़ सकता है)

 from jpype import * startJVM(getDefaultJVMPath(), "-ea") java.lang.System.out.println("hello world") shutdownJVM()