batの磕磕碰碰
前两天用kettle和存储过程实现了两个划小接口,然后用bat调用它们,在自己的xp系统上测试完全通过,没有任何问题。
然后很开心滴把成果打包给北京的同事他们使用。第二天他们跟我说无法取数,我马上就流冷汗了,直觉不会这么简单就算了。
万般无奈下,只得远程解决问题哪~!kettle最令人开心的是不需要安装,只需要提供相应的jdk版本就可以。打开spoon.bat,
可以查询到相应的版本:
==============================================
REM java version "1.6.0_17"
REM Java(TM) SE Runtime Environment (build 1.6.0_17-b04)
REM Java HotSpot(TM) 64-Bit Server VM (build 14.3-b01, mixed mode)
===============================================
当同事说无法取数时,我第一个反应就是糟糕了,不会的jdk问题吧。唉,他的tomcat要用jdk5,但是kettle需要jdk6。
jdk6的安装很简单,但是关键是环境变量的配置问题:
@JAVA_HOME D:\Program Files\Java\jdk1.6.0_02
@PATH %JAVA_HOME%\bin
@CLASSPATH .;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar
(.;当前路径)
测试jdk是否安装配置成功:【cmd】-【javac】
提示:javac不是内部或者外部命令。度娘上都是告诉你环境配置错误了,姐要控告这些坑爹货,事实上并非一定是这个
因素,有可能是因为命令的问题,有些系统无法缺省命令的后缀,所以测试时用javac.exe。
终于环境已经配置好了,但是我写的bat虽然不提示找不到路径,但是却说找不到find命令。这个的原因和上面是同样
的原理,只需要在spoon.bat里面将find改成find.exe即可解决问题。
:USEJAVAFROMPENTAHOJAVAHOME
FOR /F %%a IN ('.\java.exe -version 2^>^&1^|%windir%\system32\find.exe /C "64-Bit"') DO
==================================================================
最后有一个经验得到:调用bat时不要直接执行bat,要用cmd来调用bat,这样才会显示所有详细的日志,方便查找问题和
调试。