先说下上面问题的原因,上面问题是因为python中用到了第三方的类库,你的电脑上没有那个类库,所以程序没有运行,在控制台也就看不到输出。只要导入那个类库就好。。。

python 导入类库,可以单独下载那个类库安装,也可以直接下载 Anaconda (这里面包含了python numpy pandas)不过比较大。

不过我,不是用的上面的两种方式,我是在pycharm 中打开的python程序,pycharm提示要不要自动下载类库(类似于ideal 中写java 代码的自动导包),我选择导入。(简单粗暴)

pycharm 的安装:https://blog.csdn.net/asd343442/article/details/84103444

最近公司要用到java调用python。

 通过百度了解到java 调用python有 Runtime() 和Jython 两种方法。 runtime对于简单的程序可以直接使用,也不用导包什么的。

Jython是python在java语言平台的实现。我们平时使用的python其实是Cython 是python 在C语言的实现。 python只是语言规范,执行需要C JAVA 等语言去执行。

Jython的使用,需要安装Jython的环境和导入Jython导包。

参考文章 :https://www.cnblogs.com/nuccch/p/8435693.html

  https://blog.csdn.net/it_xiao_bai/article/details/79074988

runtime java调用python参考代码:

public class CallPy {
public static void main(String[] args) throws IOException, InterruptedException {
// TODO Auto-generated method stub
int month = 5;
Process proc;
String lastLine = null;
try {
String[] strings = {"python", "E:\\devTool\\Pyproject\\demo\\second.py"};
String[] strings2 = {"E:\\devTool\\python\\python.exe", "D:\\add.py"};
// 执行py文件\\
proc = Runtime.getRuntime().exec(strings);
//用输入输出流来截取结果
BufferedReader in = new BufferedReader(new InputStreamReader(proc.getInputStream()));
String content = null;while (true){
lastLine = content;
if ((content = in.readLine()) == null){
System.out.println(lastLine);
break;
}
}
in.close();
proc.waitFor();
} catch (IOException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
String substring = lastLine.substring(1, lastLine.length() - 1);
String[] split = substring.split(" ");
    

第一个坑: 上面这段代码,黄色部分是取出python输出的最后一行的内容。

上面靛蓝色的部分,上面部分是写的2个python运行文件的地址,下面的是指的是对输出的字符串,切割空格得到数组。因为我的电脑上有多个python运行环境(自己安装了一个python,安装了jython),如果不指定python.exe的绝对路径,在下面字符串按照空格切割解得到的数组,中间会夹杂着 空字符串,解决办法是,把 split(“  ”)引号中输入2个空格。

第二个坑: 电脑上如果没有python的环境,会报无法加载python文件的错误。。

java 通过runtime 调用python 不显示python运行内容的bug的更多相关文章

  1. [DEBUG] java中用Runtime调用python 简单程序输出null

    今天需要在java中调用python脚本,首先考虑的是java自带的Runtime 在ubuntu和win10下分别测试,发现win10报错 java源代码 @Test public void tes ...

  2. java使用RunTime调用windows命令行

    当Java需要调用windows系统进行交互时,可以使用Runtime进行操作. 例子: 1.调用window中获取关于java相关的进行信息 Runtime rt = Runtime.getRunt ...

  3. Java借助Runtime调用外部程序阻塞的代码

    有时候在java代码中会调用一些外部程序,比如SwfTools来转换swf.ffmpeg来转换视频等.如果你的代码这样写:Runtime.getRuntime().exec(command),会发现程 ...

  4. java中怎么调用python 脚本

    调用方法: import java.io.BufferedReader; import java.io.InputStreamReader; public class PythonInvoke { p ...

  5. Java程序中调用Python脚本的方法

    在程序开发中,有时候需要Java程序中调用相关Python脚本,以下内容记录了先关步骤和可能出现问题的解决办法. 1.在Eclipse中新建Maven工程: 2.pom.xml文件中添加如下依赖包之后 ...

  6. Mac笔记本中是用Idea开发工具在Java项目中调用python脚本遇到的环境变量问题解决

    问题描述: mac笔记本本身会自带几个python版本,比如python2.7版本,我没有改动mac默认的python版本,只是安装了python3.7版本. 使用Pycharm开发Python项目没 ...

  7. java web应用调用python深度学习训练的模型

    之前参见了中国软件杯大赛,在大赛中用到了深度学习的相关算法,也训练了一些简单的模型.项目线上平台是用java编写的web应用程序,而深度学习使用的是python语言,这就涉及到了在java代码中调用p ...

  8. Atitit. servlet 与 IHttpHandler  ashx  listen 和HttpModule的区别与联系 原理理论 架构设计   实现机制    java php c#.net js javascript  c++ python

    Atitit. servlet 与 IHttpHandler  ashx  listen 和HttpModule的区别与联系 原理理论 架构设计   实现机制    java php c#.net j ...

  9. Atitit  文件上传  架构设计 实现机制 解决方案  实践java php c#.net js javascript  c++ python

    Atitit  文件上传  架构设计 实现机制 解决方案  实践java php c#.net js javascript  c++ python 1. 上传的几点要求2 1.1. 本地预览2 1.2 ...

随机推荐

  1. H5新增input标签

    1.电子邮件 <input type="email" name="email"/> 默认正则:输入内容必须有@符号,@后面必须有内容 2.搜索框 & ...

  2. Sass和Compass学习笔记系列之Sass

    最近在慕课网学习Sass和Compass,学习链接地址:https://www.imooc.com/learn/364,现在整理笔记如下: 一.使用Sass和Compass的优点: a.使用Sass和 ...

  3. 我对xss以及sql的理解

    我对xss以及sql的理解 本文作者:情殇(查看作者所有博文) 作者邮箱:3135117931@qq.com 发布时间: Fri, 12 Jul 2019 19:16:00 +0800 Xss和sql ...

  4. Python将字符串转换成字典

    1. ast包 import ast user_info = '{"name" : "南湖", "gender" : "male& ...

  5. Spring Cloud 之 服务网关

    在微服务架构体系中,使用API 服务网关后的系统架构图如下: API服务网关的主要作用如下: 服务访问的统一入口 服务访问的负载均衡功能 服务访问的路由功能 在SpringCloud中,基于Netfl ...

  6. python requests包的基本使用

    Requests 安装requests模块: D:\Install\Python36>pip3 install requests 请求方式 #coding:utf-8 import reques ...

  7. 加密与解密 Sytem.Security.CryptoGraphy

    一.Hash加密,使用HashAlgorithm哈希算法类的派生类 HashAlgorithm派生类包括: KeyedHashAlgorithm: 显示所有加密哈希算法实现均必须从中派生的抽象类. M ...

  8. BZOJ4543 Hotel加强版(长链剖分)

    题意 求一棵树上,两两距离相等的三个点的三元组(无序)的个数. 题解 转自 CaptainHarryChen 的博客 CODE 代码中的f,gf,gf,g对应题解中的num,waynum,waynum ...

  9. Vue 定义全局变量

    main.js 中定义 import Ws from './lib/ws' import ElementUI from 'element-ui'; import GlobalFunc from './ ...

  10. POJ-2689-Prime Distance(素数区间筛法)

    链接: https://vjudge.net/problem/POJ-2689 题意: The branch of mathematics called number theory is about ...