【问题标题】:pass data from java to python and back jython将数据从 java 传递到 python 并返回 jython
【发布时间】:2016-04-11 23:33:27
【问题描述】:

我正在使用 Jython 从 Java 运行 python 脚本。当我使用 PythonInterpreter 调用脚本时,我能够将数据作为命令行参数发送到 python 脚本。

现在我想从 Jython 脚本中调用一个 Java 方法,传递一个 List 作为方法参数。我该怎么做?

【问题讨论】:

  • 如何执行命令行arg?你可以让java监听那个命令行的错误或者输出流。
  • 我想从 python 脚本调用 java 函数并将数据作为参数发送。为了将参数从 java 传递给 python,我使用了初始化的 PythonInterpreter 对象
  • 我应该说“你如何执行命令行参数”(显示代码)。抱歉今天没喝咖啡。
  • 基于 OP cmets 的清晰度

标签: java python-2.7 jython jython-2.7


【解决方案1】:

我正在发布用于从 Java -> Python 和 Python -> Java 传递数据的代码。希望这可以帮助某人! 在这里,字符串数组“s”被传递给python脚本,从python,“city”列表通过函数调用getData()从python传递给Java。

JavaProg.java:

import org.python.core.PyInstance;
import org.python.util.PythonInterpreter;


public class JavaProg
{
    static PythonInterpreter interpreter;

   @SuppressWarnings("resource")
public static void main( String gargs[] )
   {
      String[] s = {"New York", "Chicago"};
      PythonInterpreter.initialize(System.getProperties(),System.getProperties(), s);
      interpreter = new PythonInterpreter();
      interpreter.execfile("PyScript.py");
      PyInstance hello = (PyInstance) interpreter.eval("PyScript" + "(" + "None" + ")");
   }

   public void getData(Object[] data)
   {
       for (int i = 0; i < data.length; i++) {
           System.out.print(data[i].toString());
    }

   }
}

PyScript.py:

import JavaProg
class PyScript:
    def __init__(self,txt):
        city = []
        for i in range(0,len(sys.argv)):
            city.append(str(sys.argv[i]))
        jObj = JavaProg()
        jObj.getData(city)
        print "Done!"

【讨论】:

  • 嗨@nikhilS,我正在尝试这个确切的代码。但我收到错误````线程“主”回溯中的异常(最近一次调用最后):文件“PyScript.py”,第 1 行,在 中 import JavaProg ImportError: No module named JavaProg ````
猜你喜欢
  • 2019-01-13
  • 1970-01-01
  • 2015-09-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-26
  • 2015-05-30
相关资源
最近更新 更多