目录
2.使用Runtime.getRuntime()执行python脚本文件,推荐使用
一个项目可能需要用到人工智能算法,在java后端中需要调用python算法,这篇文章就简单介绍一下其中的两种java调用python方法。
1.JPython
1.1 JPython介绍
JPython 是一种运行在 Java 平台上的 Python 解释器。它可以让你使用 Python 编写 Java 程序,并且能够使用 Java 类库和工具。
JPython 的主要优点在于,它可以让你在 Java 平台上使用 Python 语言开发程序,这对于那些熟悉 Python 语言但又希望使用 Java 开发程序的人来说,是一个非常方便的工具。
此外,JPython 还具有良好的互操作性,可以轻松地与 Java 程序交互。这意味着,你可以使用 Python 编写的程序来调用 Java 程序中的方法,或者使用 Java 程序中的方法来调用 Python 程序中的代码。
总的来说,JPython 是一种非常实用的工具,可以让你在 Java 平台上使用 Python 语言开发程序,并能够方便地与 Java 程序交互。
1.2 JPython实践
maven中导入依赖
<dependency>
<groupId>org.python</groupId>
<artifactId>jython-standalone</artifactId>
<version>2.7.2</version>
</dependency>
在.py文件中添加一个两个数相加的函数,代码如下:
def add(a,b):
return a+b
java调用python进行实现1+2的结果运算,代码如下:
@GetMapping("/test")
public String test(){
PythonInterpreter pythonInterpreter=new PythonInterpreter();
pythonInterpreter.execfile("C:\\Users\\Administrator\\PycharmProjects\\pythonProject\\go.py");
PyFunction pyFunction=pythonInterpreter.get("add",PyFunction.class);
PyObject pyObject = pyFunction.__call__(new PyInteger(1), new PyInteger(2));
return pyObject.toString();
}
运行执行结果如下图:
2.使用Runtime.getRuntime()执行python脚本文件,推荐使用
String数组里的那一行很重要,首先一定要设置好你所使用的python的位置,切记不要直接使用python,因为系统会默认使用自带的python,所以一定要设置好你所使用的python的位置,否则可能会出现意想不到的问题(比如说我使用的是anaconda中的python,而ubuntu系统会默认调用自带的python,而我自带的python中并没有numpy库,所以会造成相应的代码不会执行的问题,所以设置好python的位置是很重要的)。还有就是要设置好py文件的位置,使用绝对路径。在这里插入代码片。
还有就是可以看出,此方法可以满足我们python代码中调用第三方库的情况,简单实用。
public class Test {
public static void main(String[] args) {
try {
// 第一个参数为本地python路径, 第二个参数为脚本路径
String[] args1 = new String[]{"C:\\Users\\Administrator\\PycharmProjects\\pythonProject\\venv\\Scripts\\python", "C:\\Users\\Administrator\\PycharmProjects\\pythonProject\\go.py"};
Process proc = Runtime.getRuntime().exec(args1); // 执行py文件
BufferedReader in = new BufferedReader(new InputStreamReader(proc.getInputStream()));
String line = null;
int index =0;
while ((line = in.readLine()) != null) {
System.out.println(line);
}
in.close();
proc.waitFor();
}catch (Exception e) {
e.printStackTrace();
}
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/196995.html