Windows:
String[] arguments = new String[] {"python3","D:/你的python文件地址.py",exp}; Process process = Runtime.getRuntime().exec(arguments)
Linux:
Process process = Runtime.getRuntime().exec(new String[] { "/bin/bash", "-c", new StringBuffer("python3 /usr/你的python文件地址.py '" + exp + "'").toString()});
1、其中exp为调用python文件时传入的参数。
2、python和python3命令由具体安装python版本决定。
3、linux中,命令为/bin/bash -c,且携带的参数需要用引号包裹。
FROM adoptopenjdk/openjdk8-openj9:jdk8u282-b08_openj9-0.24.0-alpine-slimLABEL description="you label name"RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositoriesRUN set -xe && apk --no-cache add ttf-dejavu fontconfigRUN apk add -U tzdata && cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo "Asia/Shanghai" > /etc/timezone && apk add --no-cache bash bash-doc bash-completion && apk add --no-cache python3 python3-dev py-pip && apk del tzdata && rm -rf /var/cache/apk/ RUN mkdir -p /webappWORKDIR /webappADD ./webapp-0.0.1-SNAPSHOT.jar ./webapp.jarENTRYPOINT ["java", "-Djava.security.egd=file:/dev/./urandom", "-jar", "webapp.jar"]
其中apk add --no-cache python3 python3-dev py-pip 为在Docker容器中安装python环境。
docker-compose.ymlversion: '3'services: web: build: context: ./ dockerfile: ./Dockerfile container_name: web privileged: true restart: always command: - --server.port=8080 ports: - 8080:8080 volumes: - /usr/:/usr/
volumes指定docker容器内部和外部目录挂载关系,我们python文件放在uabntu系统目录下的位置要映射到jar包运行所在的docker容器中。
这样程序在docker中运行才能找到ubantu系统中对应文件,然后执行命令,也就是执行python脚本。
如有问题欢迎评论,创作不易,辛苦点个赞呗~