2010-04-20 16 views
10

मैं एक जावा 6 javax.script का उपयोग कर आवेदन से Jython कॉल करने के लिए कोशिश कर रहा हूँ:स्क्रिप्टिंग इंजन (jython) के माध्यम से जावा से पायथन कॉलिंग?

import javax.script.ScriptEngine; 
import javax.script.ScriptEngineManager; 
import javax.script.ScriptException; 

public class jythonEx 
{ 
    public static void main (String args[]) throws ScriptException 
    { 
     ScriptEngineManager mgr = new ScriptEngineManager(); 
     ScriptEngine pyEngine = mgr.getEngineByName("python"); 
     try { 
      pyEngine.eval("print \"Python - Hello, world!\""); 
     } catch (Exception ex) { 
      ex.printStackTrace(); 
     }  
    } 
} 

यह एक NullPointerException खड़ी कर रहा है:

java.lang.NullPointerException 
     at jythonEx.main(jythonEx.java:12) 

किसी को भी मैं गलत यहाँ क्या कर रहा हूँ किसी भी विचार है?

संपादित करें:

प्रतिक्रिया के लिए धन्यवाद! मैंने jython.jar को क्लासपाथ में जोड़ा और यह ठीक से चलता है:

java -cp "./;jython.jar" jythonEx 
+0

कौन सा लाइन 12 है? pyEngine.eval ("") ;? – ilikeorangutans

+0

@ilikeorangutans: हाँ, यह रेखा 12 है। – OscarRyz

+0

यह सही है। मुझे लगता है कि ScriptEngineManager को पाइथन इंजन नहीं मिल रहा है, लेकिन मुझे नहीं लगता कि मैं क्या गलत कर रहा हूं जो ... – griffin

उत्तर

15

आपको पहले अपना इंजन पंजीकृत करना होगा।

से: ScriptEngineManager.getEngineByName:

[...] एक ScriptEngineFactory कि एक संभाल के रूप में पंजीकृत किया गया है के लिए पहले खोज [...] अशक्त रिटर्न अगर ऐसी कोई कारखाना मिला था

उपयोगकर्ता पुस्तिका

कहते to use it with JSR-223 आपके पास करने के लिए:

Jython 2 के रूप में। 5.1 जेएसआर 223 का कार्यान्वयन jython.jar में बंडल किया गया है। बस अपने क्लासस्पैट में ज्योथन जोड़ें और पायथन स्क्रिप्ट इंजन के लिए पूछें।

क्या आपने पहले से ही ऐसा किया था?

संपादित अपनी टिप्पणी के बारे में: मुझे लगता है कि आप कोई नया प्रश्न खोलना चाहिए, आपको बेहतर उत्तर मिल जाएगा।

+0

नहीं, मैंने कभी ऐसा नहीं किया, धन्यवाद! मैंने कुछ भी किए बिना javax.script के माध्यम से जावास्क्रिप्ट का उपयोग किया है, इसलिए मैंने स्पष्ट रूप से उस चरण को याद किया। मुझे अब आज़माएं ... – griffin

+0

@griffin ग्रेट !, शायद वह करेगा। हमें बताएं कि यह काम करेगा या नहीं? – OscarRyz

+0

@ ऑस्कर: धन्यवाद; वह चाल है! – griffin

2

आपको शायद स्क्रिप्टइंजिन फैक्टरी के लिए'python '

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