本文共 4910 字,大约阅读时间需要 16 分钟。
操作系统:Windows 7 Ultimate
JDK版本:1.8
虚拟环境:Anaconda
python 版本:3.6
- python 官网:
- 北京外国语大学开源软件镜像站:
- Microsoft Visual C++ 2015 RCRedistributable 下载:
- ProcessBuilder class:
- Runtime class:
- jyphon 官网:
- flask Github:
- Anacoda安装和使用:
- flask 框架入门和使用实践:
main_java.py
说明:根据传入参数,返回组装的 json 对象
# coding=utf-8import jsonfrom sys import argvdef assemble_data(id, name): """ 组装数据 :return: result """ # 结果字典 result = { } # 封装结果 result["id"] = id result["name"] = name return resultif __name__ == '__main__': result = assemble_data(argv[1], argv[2]) # 输出 json 格式字符串 print(json.dumps(result))
CommandTask.java
说明:两种实现分别是
ProcessBuilder
和Runtime
package com.demo.util;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.List;/** * 执行命令的任务工具 * */public class CommandTask { /** * 执行命令( ProcessBuilder 实现 ) * @param command 命令列表 * @return String * */ public static String exeuteByProcessBuilder(Listcommand) throws IOException, InterruptedException { ProcessBuilder processBuilder = new ProcessBuilder(command); Process process = processBuilder.start(); // 开始执行 // 字节流和字符流的中介 InputStreamReader inputStreamReader = new InputStreamReader(process.getInputStream()); BufferedReader bufferedReader = new BufferedReader(inputStreamReader); // 字符流 StringBuilder result = new StringBuilder(); // 结果数据 String line = ""; while ((line = bufferedReader.readLine()) != null){ // System.out.println( line ); // 打印内容 result.append(line); } // 关闭流 if(bufferedReader != null){ bufferedReader.close(); } if(inputStreamReader != null){ inputStreamReader.close(); } return result.toString(); } /** * 执行命令( Runtime 实现 ) * @param command 命令数组 * @return String * */ public static String exeuteByRuntime(String [] command) throws IOException, InterruptedException { // 执行命令 Process process = Runtime.getRuntime().exec(command); // 读取内容 BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(process.getInputStream())); StringBuilder result = new StringBuilder(); // 结果数据 String line= ""; while ((line = bufferedReader.readLine()) != null){ // System.out.println(line); // 打印内容 result.append(line); } // 关闭流 bufferedReader.close(); return result.toString(); }}
CommandTaskTest.java
说明:
如果启动参数配置了 python 的环境变量,可以将
E:\\Anaconda3\\envs\\python36\\python.exe
简写为python
fastjson 可以解决中文
Unicode
编码的问题
package com.demo.util;import com.alibaba.fastjson.JSONObject;import org.junit.Test;import java.io.IOException;import java.util.Arrays;import java.util.List;public class CommandTaskTest { @Test public void exeuteByProcessBuilder() throws IOException, InterruptedException { // 参数 Listcommand = Arrays.asList( "E:\\Anaconda3\\envs\\python36\\python.exe" , "E:\\python_project\\main_java.py" , "1001", "小明同学" ); // 执行 String content = CommandTask.exeuteByProcessBuilder(command); System.out.println(JSONObject.parse(content)); } @Test public void exeuteByRuntime() throws IOException, InterruptedException { // 参数 String [] command = new String[]{ "E:\\Anaconda3\\envs\\python36\\python.exe" , "E:\\python_project\\main_java.py" , "1001", "小明同学" }; // 执行 String content = CommandTask.exeuteByRuntime(command); System.out.println(JSONObject.parse(content)); }}
> python -m ensurepip> python -m pip install --upgrade pip --force-reinstall
北京外国语大学开源软件镜像站:
pip install -i https://mirrors.bfsu.edu.cn/pypi/web/simple pip -Upip config set global.index-url https://mirrors.bfsu.edu.cn/pypi/web/simple
api-ms-win-crt-runtimel1-1-0.dll
丢失C:\Windows\SysWOW64
(64 位操作系统)C:\Windows\SysWOW64
配置到系统环境变量中Microsoft Visual C++ 2015 RCRedistributable 下载:
python.exe应用程序无法正常启动(Oxc000007b)
Microsoft Visual C++ 2015 RCRedistributable (x64)
import cv2
时,出现提示:ImportError: DLL load failed: %1 不是有效的 Win32 应用程序
> pip install opencv-python==3.3.0.9
转载地址:http://hznws.baihongyu.com/