• 在java类中直接执行python语句
  • 在java类中直接调用本地python脚本
  • 使用Runtime.getRuntime()执行python脚本文件(推荐)
  • 调用python脚本中的函数

准备工作:

创建maven工程,结构如下:

到官网https://www.jython.org/download.html下载Jython的jar包或者在maven的pom.xml文件中加入如下代码:

1

2

3

4

5

<dependency>

  <groupId>org.python</groupId>

  <artifactId>jython-standalone</artifactId>

  <version>2.7.0</version>

</dependency>

1.在java类中直接执行python语句

创建JavaRunPython.java类:

1

2

3

4

5

6

7

8

9

10

11

12

13

package com.test;

import org.python.util.PythonInterpreter;

public class JavaRunPython {

  

  public static void main(String[] args) {

    PythonInterpreter interpreter = new PythonInterpreter();

    interpreter.exec("a='hello world'; ");

    interpreter.exec("print a;");

  }

}

输出结果如下:

出现的console: Failed to install '': java.nio.charset.UnsupportedCharsetException: cp0.并不是错误,而是兼容所导致,解决方法如下:

2.在java中直接调用python脚本

在本地的D盘创建一个python脚本,文件名字为javaPythonFile.py,文件内容如下:

1

2

3

a = 1

b = 2

print (a + b)

创建JavaPythonFile.java类,内容如下:

1

2

3

4

5

6

7

8

9

10

11

package com.test;

import org.python.util.PythonInterpreter;

public class JavaPythonFile {

  public static void main(String[] args) {

    PythonInterpreter interpreter = new PythonInterpreter();

    interpreter.execfile("D:\\javaPythonFile.py");

  }

}

输出结果如下:

3.使用Runtime.getRuntime()执行python脚本文件,推荐使用

在本地的D盘创建一个python脚本,文件名字为Runtime.py,文件内容如下:

1

print('RuntimeDemo')

创建RuntimeFunction.java类,内容如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

package com.test;

import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStreamReader;

public class RuntimeFunction {

  public static void main(String[] args) {

    Process proc;

    try {

      proc = Runtime.getRuntime().exec("python D:\\Runtime.py");

      BufferedReader in = new BufferedReader(new InputStreamReader(proc.getInputStream()));

      String line = null;

      while ((line = in.readLine()) != null) {

        System.out.println(line);

      }

      in.close();

      proc.waitFor();

    } catch (IOException e) {

      e.printStackTrace();

    } catch (InterruptedException e) {

      e.printStackTrace();

    }

  }

}

运行结果如下:

4.调用python脚本中的函数

在本地的D盘创建一个python脚本,文件名字为add.py,文件内容如下:

1

2

def add(a,b):

  return a + b

创建Function.java类,内容如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

package com.test;

import org.python.core.PyFunction;

import org.python.core.PyInteger;

import org.python.core.PyObject;

import org.python.util.PythonInterpreter;

public class Function {

  

  public static void main(String[] args) {

    PythonInterpreter interpreter = new PythonInterpreter();

    interpreter.execfile("D:\\add.py");

        

    // 第一个参数为期望获得的函数(变量)的名字,第二个参数为期望返回的对象类型

    PyFunction pyFunction = interpreter.get("add", PyFunction.class);

    int a = 5, b = 10;

    //调用函数,如果函数需要参数,在Java中必须先将参数转化为对应的“Python类型”

    PyObject pyobj = pyFunction.__call__(new PyInteger(a), new PyInteger(b));

    System.out.println("the anwser is: " + pyobj);

  }

}

运行结果如下:

到此这篇关于详解java调用python的几种用法(看这篇就够了)的文章就介绍到这了,更多相关java调用python内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

java调用python接口详解相关推荐

  1. java调用hidl_Android HIDL 详解

    前言 Android Treble 简介 一文中提到了Android O之后使用Treble的架构,为了解决Android 系统的碎片化问题和提高系统更新的效率,减少了framework 和HAL 的 ...

  2. 【Java课堂】接口详解

    目录 1.接口的概念 2.语法规则 实现接口有几条规范需要我们注意 3.接口的使用 4.接口的特性 5.实现多个接口 6.接口间的继承 1.接口的概念 接口顾名思义,就是我们身边常用的行为规范.而接口 ...

  3. Java反射——Type接口详解

    目录 Type的简介 Type的获得 Type的分类 1,Class 2,ParameterizedType 3,GenericArrayType 4,WildcardType 5,TypeVaria ...

  4. JAVA调用SQL存储过程详解

    1使用不带参数的存储过程 使用 JDBC 驱动程序调用不带参数的存储过程时,必须使用 call SQL 转义序列.不带参数的 call 转义序列的语法如下所示: {call procedure-nam ...

  5. java抽象类和接口详解

    接口和内部类为我们提供了一种将接口与实现分离的更加结构化的方法. 抽象类与接口是java语言中对抽象概念进行定义的两种机制,正是由于他们的存在才赋予java强大的面向对象的能力.他们两者之间对抽象概念 ...

  6. Java抽象类与接口详解

    目录 1.抽象方法以及抽象类 1.抽象方法 2.抽象类 1.抽象类的注意事项: 2.为什么抽象类中要有构造方法 2.接口 1.接口的定义和使用 1.接口用关键字interface进行定义 2.接口不能 ...

  7. java的Comparator接口详解

    前面我们讲过Java提供了一个用于比较的接口Comparable,提供了一个比较的方法,所有实现该接口的类,都动态的实现了该比较方法.实际上Java中除了比较一个接口外,还提供了一个接口,该接口也是具 ...

  8. Java 的 Comparator 接口详解

    Comparator 接口产生背景是排序 默认的 compareTo 方法是比较 字符码值大小: 如果我们需要实现比较字符的长度比较排序:在 Arrays.sort(数组对象,一个实现了Compara ...

  9. java有返回值的方法回调_java调用回调机制详解

    调用和回调机制 在一个应用系统中, 无论使用何种语言开发, 必然存在模块之间的调用, 调用的方式分为几种: 1.同步调用 同步调用是最基本并且最简单的一种调用方式, 类A的方法a()调用类B的方法b( ...

最新文章

  1. Magento 添加 google font Adding a google fonts into Magento
  2. ElasticSearch面试 - es 生产集群的部署架构是什么?
  3. [数学][欧拉降幂定理]Exponial
  4. C语言随笔小算法:取出一个任意整数的每一位数值
  5. img src请求后台值值能判断_图片src拼接后台返回ID
  6. 目标检测(十七)--PVANet
  7. 【限时免费】云计算时代的安全和智能运维(11月18日周六|广州)
  8. 自学-Linux-老男孩Linux77期-day6
  9. Spring: J2EE框架
  10. 数据分析-关联规则-Apriori
  11. 区块链三种网络地址btc\eth\fil
  12. 业务流程优化设计之思想和原则 (转载)
  13. swiper禁止手动滑动
  14. python求三重积分_三重积分的Python数值计算
  15. Java识别验证码和图像处理
  16. python程序员搞笑表情包_几十个程序员扎心的瞬间—必存表情包系列
  17. 利用Scrybe增强您的触摸板计算机的性能
  18. 10 位 IT 界女性精英
  19. 酷狗音乐的爬取,基于python,从无到有完整教程-上:搭建环境及爬取原理讲解
  20. Axure数据可视化BI大屏看板原型 FUI动态大数据分析后台

热门文章

  1. 计算机网络技术数字地球,“数字地球”是指把整个地球信息进行数字化后,由计算机网络来管理的技...
  2. POJ 1509 Glass Beads
  3. 计算机与科学论文3000,计算机科学技术应用论文3000字(2)
  4. 百度联手清华大学出版社 打造国内首套产教融合人工智能系列教材
  5. 基于多元线性回归的股票分析与预测——R语言
  6. 十分钟带你了解mock.js
  7. 短信开发:收不到短信通知的解决办法
  8. 夺命雷公狗---javascript NO:20 面向对象历史起源
  9. excel 瀵煎叆mysql_瀵煎叆fun-foodPPT课件
  10. 梦幻跨服购买需要登录服务器未响应,梦幻西游跨服购买你角色,跨服购买可以连角色转过去...