无法从Java执行Python脚本
我正在尝试使用下面的代码从Java执行python脚本无法从Java执行Python脚本,java,python-3.x,bash,shell,Java,Python 3.x,Bash,Shell,我正在尝试使用下面的代码从Java执行python脚本 File file = new File(classLoader.getResource("api.py").getFile()); String fileName = file.getAbsolutePath(); logger.info("Test1Application - "+fileName); File file2 = new File(classLoader.g
File file = new File(classLoader.getResource("api.py").getFile());
String fileName = file.getAbsolutePath();
logger.info("Test1Application - "+fileName);
File file2 = new File(classLoader.getResource("init.py").getFile());
String initFileName = file2.getAbsolutePath();
logger.info("Test1Application - "+initFileName);
String[] cmd = {
"/bin/bash",
"-c",
"./"+initFileName
};
p = Runtime.getRuntime().exec(cmd);
下面是两个python脚本和shell脚本(1st api.py):
第二个脚本(init.py):
Perm.sh
#!/bin/sh
echo "perm start"
chmod 777 *.*
nohup python3 api.py
echo "perm end"
每当我从Java调用第一个脚本(api.py)时,它都可以完全正常工作,并且api在本地主机上公开。但是如果我使用同一个程序中的第二个脚本,它不会被执行,甚至日志文件也不会被创建
我不确定,在第二种情况下,我在这里遗漏了什么或做错了什么,如果有任何帮助,我们将不胜感激
注意:在本地运行之前,代码可能需要一些格式,因为我需要调整选项卡以显示在这里的代码块中。您确定需要运行/bin/bash-c'script.py'吗?为什么不使用python3 script.py呢?cmd只适用于第一个脚本,即使我像这样使用它
String cmd=“python3”+initFileName代码>无法使用此格式运行第二个脚本。
import subprocess
import os
from datetime import datetime
import logging
# Create and configure logger
logging.basicConfig(filename="pythonExecution.log",
format='%(asctime)s %(message)s',
filemode='w')
# Creating an object
logger = logging.getLogger()
# Setting the threshold of logger to DEBUG
logger.setLevel(logging.INFO)
logger.info("Inside init.....")
logger.info(datetime.now())
os.chmod("perm.sh", 0o775)
subprocess.call('./perm.sh')
#subprocess.call('./run_cmd.sh')
logger.info("End of init script")
#!/bin/sh
echo "perm start"
chmod 777 *.*
nohup python3 api.py
echo "perm end"