python-3.x - 如何从 Python 3.x 调用具有类路径的 java 程序
问题描述
我正在尝试使用带有类路径的 java 命令从 python 3.7 程序执行外部 java 程序。我在 Python 中使用 subprocess.Popen 模块。不知何故,我无法让它工作!感谢任何帮助!
cmd = ['java',
'-classpath', 'C:/Users/Documents/MqTransfer.jar', 'C:/Users/Documents/com.ibm.mq.commonservices.jar',
'C:/Users/Documents/com.ibm.mq.headers.jar', 'C:/Users/Documents/com.ibm.mq.jar',
'C:/Users/Documents/com.ibm.mq.jmqi.jar', 'C:/Users/Documents/com.ibm.mq.pcf.jar',
'C:/Users/Documents/connector.jar', 'C:/Users/Documents/xerces.jar',
'MyMqTransfer', 'C:/Users/Documents/queueTransfer.properties']
jproc = subprocess.Popen(cmd, stdout=PIPE, stderr=PIPE)
output, errors = jproc.communicate()
print(output, errors)
我收到以下错误
b'' b'错误:无法找到或加载主类 C:.Users.Documents.com.ibm.mq.commonservices.jar\r\n'
当我尝试从我的批处理脚本运行 java 程序时,它运行良好!这是我在批处理脚本中使用的命令。问题出在我的python代码上!
java -classpath MqTransfer.jar;com.ibm.mq.commonservices.jar;com.ibm.mq.headers.jar;com.ibm.mq.jar;com.ibm.mq.jmqi.jar;com.ibm.mq.pcf.jar;connector.jar;xerces.jar com.ibm.my.mq.MyMqTransfer C:\Users\Documents\queueTransfer.properties
解决方案
根据错误,我相信正在执行的进程类似于 'java -classpath C:/Users/Documents/MqTransfer.jar c:/Users/Documents/com.ibm.mq.commonServices.jar [接下来是其余的你传递给进程的参数]' 这样 java 被传递给 MqTransfer.jar 作为整个类路径参数,并认为'C:.Users.Documents.com.ibm.mq.commonservices.jar' 是你要启动的类。尝试将整个预期的类路径组合到启动的第三个参数中,我认为你会很好。它看起来像这样:
cmd = ['java', '-classpath', 'C:/Users/Documents/MqTransfer.jar;C:/Users/Documents/com.ibm.mq.commonservices.jar;C:/Users/Documents/com.ibm.mq.headers.jar ;C:/Users/Documents/com.ibm.mq.jar;C:/Users/Documents/com.ibm.mq.jmqi.jar;C:/Users/Documents/com.ibm.mq.pcf.jar; C:/Users/Documents/connector.jar;C:/Users/Documents/xerces.jar', 'MyMqTransfer'、'C:/Users/Documents/queueTransfer.properties']
推荐阅读
- java - 如何在 Gradle 中抑制 Spotbugs 堆栈跟踪?
- octave - 如何将我的数据保存为 Octave 中的 bmp 格式?
- git - 什么在没有`git-svn`的情况下从源代码构建`git`?
- python - 带有 Cartopy 的扩展欧洲地图
- amazon-dynamodb - 如何排除 DynamoDB GSI 中的项目
- c# - 如何更改标签的坐标
- php - 如何在 Laravel 的产品页面中获取产品(数组)的多个属性(数组)?
- kubernetes - Kubernetes入口总是返回503
- doxygen - 当我使用多种语言时,Doxygen 会生成空白页面
- python - 无法使用 for 循环迭代元组