java调用python传参返回计算结果
项目想用java调用python脚本进行传参计算并返回结果。使用Jython.jar的PythonInterpreter类。
PythonInterpreter interpreter = new PythonInterpreter();
PySystemState sys = Py.getSystemState();
sys.path.add("pythonLib/Lib");
// interpreter.exec("import MAXREPEAT");
interpreter.exec("import json");
interpreter.execfile(is); // .py脚本
PyFunction func = (PyFunction) interpreter.get(funcName,
PyFunction.class);// 脚本中函数名
PyObject pyobj = func.__call__(new PyString(jsonString)); // 函数返回值
遇到问题,需要把每一个模块路径添加进去,但是python脚本import json时报错了。jython跟python版本之间有啥要求吗,凌乱了
Python2.7.11版本
Jython2.5.3(没有json模块)与jython2.7.0(lib下有json模块)遇到问题不一样
2.5.3
模块里的模块报错
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "pythonLib\Lib\json\__init__.py", line 108, in <module>
from .decoder import JSONDecoder
File "pythonLib\Lib\json\decoder.py", line 3, in <module>
import re
File "pythonLib\Lib\re.py", line 105, in <module>
import sre_compile
File "pythonLib\Lib\sre_compile.py", line 15, in <module>
from sre_constants import *
File "pythonLib\Lib\sre_constants.py", line 18, in <module>
from _sre import MAXREPEAT
ImportError: cannot import name MAXREPEAT
2.7.0报错如下
java.lang.IllegalArgumentException: Cannot create PyString with non-byte value
at org.python.core.PyString.<init>(PyString.java:64)
at org.python.core.PyString.<init>(PyString.java:70)
PythonInterpreter interpreter = new PythonInterpreter();
PySystemState sys = Py.getSystemState();
sys.path.add("pythonLib/Lib");
// interpreter.exec("import MAXREPEAT");
interpreter.exec("import json");
interpreter.execfile(is); // .py脚本
PyFunction func = (PyFunction) interpreter.get(funcName,
PyFunction.class);// 脚本中函数名
PyObject pyobj = func.__call__(new PyString(jsonString)); // 函数返回值
遇到问题,需要把每一个模块路径添加进去,但是python脚本import json时报错了。jython跟python版本之间有啥要求吗,凌乱了
Python2.7.11版本
Jython2.5.3(没有json模块)与jython2.7.0(lib下有json模块)遇到问题不一样
2.5.3
模块里的模块报错
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "pythonLib\Lib\json\__init__.py", line 108, in <module>
from .decoder import JSONDecoder
File "pythonLib\Lib\json\decoder.py", line 3, in <module>
import re
File "pythonLib\Lib\re.py", line 105, in <module>
import sre_compile
File "pythonLib\Lib\sre_compile.py", line 15, in <module>
from sre_constants import *
File "pythonLib\Lib\sre_constants.py", line 18, in <module>
from _sre import MAXREPEAT
ImportError: cannot import name MAXREPEAT
2.7.0报错如下
java.lang.IllegalArgumentException: Cannot create PyString with non-byte value
at org.python.core.PyString.<init>(PyString.java:64)
at org.python.core.PyString.<init>(PyString.java:70)
...全文
相关推荐
python调用java代码方法
python 调用java代码方法
用java调用python
java在web程序具有很大的优势,然而在科学计算,机器学习等领域中不如python,使用java调用python就是为了能够使得一个问题能够更好的解决。
java-to-python:通过http调用接口的方式实现java调用Python程序,进行数据交互
从Java到Python 通过http调用接口的方式实现java调用Python程序,进行数据交互
java直接调用python脚本的例子
有时需求使用JAVA直接调用python脚本,执行一些服务器监控的事情。 本文给出一个java直接调用python脚本的例子
JAVA调用Python的接口
java调用python脚本的工具类,可以通过在java项目中导入当前的jar包,可以来调用python的脚本代码来执行python。


