java 调用 python

java 代码: 

package com.iflytek.bnu;
import java.util.HashMap;
import java.util.Map;
import org.python.core.PyDictionary;
import org.python.core.PyFunction;
import org.python.core.PyObject;
import org.python.core.PyString;
import org.python.util.PythonInterpreter;
public class Python {
  
  private static PythonInterpreter interpreter;
  
  public static void main(String args[]) {
    interpreter = new PythonInterpreter();
    interpreter.execfile("d:/code/python/Hello.py");
    PyFunction func = (PyFunction) interpreter.get("printDict", PyFunction.class);    
    Map<PyObject, PyObject> map = new HashMap<PyObject, PyObject>();
    PyObject py1 = new PyString("name");
    PyObject py2 = new PyString("zlchen3");
    map.put(py1, py2);
    func.__call__(new PyDictionary(map));  
  }
}

  

python 代码

#coding=utf-8
def printDict(dict):
	for (k,v) in  dict.items(): 
		print "dict[%s]=" % k,v


当使用 jython2.7-b3节点时

<groupId>org.python</groupId>
<artifactId>jython</artifactId>
<version>2.7-b3</version>
</dependency>
系统报错
console: Failed to install '': java.nio.charset.UnsupportedCharsetException: cp0.
Exception in thread "main" ImportError: No module named site
原因:此处是jython的"2.7-b3"的bug,换成“2.7-b1”即
<groupId>org.python</groupId>
<artifactId>jython</artifactId>
<version>2.7-b1</version>
</dependency>
就执行正确了


附:jython的 doc : http://www.jython.org/javadoc/org/python/core/package-summary.html

你可能感兴趣的:(java 调用 python)