Java执行Python、Shell
java执行Python或者Shell
问题描述
使用阿里的datax进行数据的同步,一开始用手动同步,在shell命令行执行python命令,没毛病。现在需要改成定时自动增量同步。所以使用Spring来实现定时任务的执行。这就涉及到使用JAVA来调用python脚本了,执行后,发现数据都没有同步成功。
问题分析
一开始用Process对象的getInputStream()获取输出结果,只有部分的输出结果,对比直接在shell命令行执行的输出结果还少了很多日志打印。
接着就怀疑是不是datax打印的日志太多了导致语句不能正常执行,于是就把logback.xml的stdout输出注释掉。问题依旧。
于是就在想怎么查看错误日志,看了datax的log目录底下的日志,没有错误信息。 通过 Process对象的 getErrorStream查看到了错误信息: /bin/sh/: java : command not found
解决方法
报错的原因是java在执行python脚本的时候,默认是用系统的/bin/目录下的命令。 错误提示java命令找不到,那么就需要将java命令添加到/bin/目录底下,通过建立link来关联 java的命令
ln -s /usr/jdk1.7/bin java
再次通过java执行python脚本进行数据同步,同步成功。
部分源码
|
|
转载请注明出处! 原文地址: http://webinglin.github.io