我有一个Python脚本可以使用java ProcessBuilder 运行。 Python脚本需要2个参数。
Arg1:
H:\!eGIS.Dev_Workbench\eGIS.ArcGIS_Workbench\!eGIS.Network_Build\eGIS.CoE.Network_Clips\Network_ETLs\eGIS.CoE.Network_Clip\MOUNTAINWEST_AZ.gdb
Arg2所得:
H:\!eGIS.Dev_Workbench\eGIS.ArcGIS_Workbench\!eGIS.Network_Build\Network_DS_ProBuild\Wp4\Network_Build_00_00_0000\WD_Mountainwest_AZ > H:\!eGIS.Dev_Workbench\eGIS.ArcGIS_Workbench\!eGIS.Network_Build\Network_DS_ProBuild\Wp4\Network_Build_00_00_0000\WD_Mountainwest_AZ\logs\BBB2_NB_Script1_AZ.txt
下面是我传递给 ProcessBuilder 执行
的String数组[C:\Pythion27\Python.exe,H:\!eGIS.Dev_Workbench\eGIS.ArcGIS_Workbench\!eGIS.Network_Build\Network_Build_Script.v.6.2_2017.12.08\Script.1-2_Trunk_20170609\Src\PY\ComcastNetworkProcessing\ComcastNetworkProcessing.py,H:\!eGIS.Dev_Workbench\eGIS.ArcGIS_Workbench\!eGIS.Network_Build\eGIS.CoE.Network_Clips\Network_ETLs\eGIS.CoE.Network_Clip\MOUNTAINWEST_AZ.gdb,H:\!eGIS.Dev_Workbench\eGIS.ArcGIS_Workbench\!eGIS.Network_Build\Network_DS_ProBuild\Wp4\Network_Build_00_00_0000\WD_Mountainwest_AZ > H:\!eGIS.Dev_Workbench\eGIS.ArcGIS_Workbench\!eGIS.Network_Build\Network_DS_ProBuild\Wp4\Network_Build_00_00_0000\WD_Mountainwest_AZ\logs\BBB2_NB_Script1_AZ.txt]
当我使用ProcessBuilder在上面形成并运行时,我收到提示消息,说 python.exe停止工作并在命令提示符下给出退出值1073741819 。当我在命令提示符下直接运行它时,它正在执行而没有任何错误。
任何人都可以帮助我,我如何使用java ProcessBuilder运行它。
答案 0 :(得分:0)
>
在shell中只有特殊含义,例如cmd.exe。
目前,您传递一个非常长的文件名,其中包含空格和>
到Python。
重定向ProcessBuilder输出的正确方法是使用redirectOutput方法:
ProcessBuilder builder = new ProcessBuilder(
"C:\\Pythion27\\Python.exe",
"H:\\!eGIS.Dev_Workbench\\eGIS.ArcGIS_Workbench\\!eGIS.Network_Build\\Network_Build_Script.v.6.2_2017.12.08\\Script.1-2_Trunk_20170609\\Src\\PY\\ComcastNetworkProcessing\\ComcastNetworkProcessing.py",
"H:\\!eGIS.Dev_Workbench\\eGIS.ArcGIS_Workbench\\!eGIS.Network_Build\\eGIS.CoE.Network_Clips\\Network_ETLs\\eGIS.CoE.Network_Clip\\MOUNTAINWEST_AZ.gdb",
"H:\\!eGIS.Dev_Workbench\\eGIS.ArcGIS_Workbench\\!eGIS.Network_Build\\Network_DS_ProBuild\\Wp4\\Network_Build_00_00_0000\\WD_Mountainwest_AZ");
builder.redirectOutput(new File(
"H:\\!eGIS.Dev_Workbench\\eGIS.ArcGIS_Workbench\\!eGIS.Network_Build\\Network_DS_ProBuild\\Wp4\\Network_Build_00_00_0000\\WD_Mountainwest_AZ\\logs\\BBB2_NB_Script1_AZ.txt"));