先写解决方案
错误信息
DEBUG: Using value () from calling script
DEBUG: _PENTAHO_JAVA_HOME=
DEBUG: _PENTAHO_JAVA=\bin\javaw.exe
系统找不到指定的路径。
系统找不到指定的路径。
前提,没有在spoon.bat 做任何改变
环境变量中有KETTLE_HOME
只想kettle安装目录
将pdi文件夹下的set-pentaho-env.bat
中的
(请提前建立文件副本哦)
:checkPentahoJavaHome
if exist "%~1\bin\%__LAUNCHER%" goto gotValueFromCaller
if not "%PENTAHO_JAVA_HOME%" == "" goto gotPentahoJavaHome
if exist "%~dp0jre\bin\%__LAUNCHER%" goto gotJreCurrentFolder
if exist "%~dp0java\bin\%__LAUNCHER%" goto gotJavaCurrentFolder
if exist "%~dp0..\jre\bin\%__LAUNCHER%" goto gotJreOneFolderUp
if exist "%~dp0..\java\bin\%__LAUNCHER%" goto gotJavaOneFolderUp
if exist "%~dp0..\..\jre\bin\%__LAUNCHER%" goto gotJreTwoFolderUp
if exist "%~dp0..\..\java\bin\%__LAUNCHER%" goto gotJavaTwoFolderUp
if not "%JAVA_HOME%" == "" goto gotJdkHome
if not "%JRE_HOME%" == "" goto gotJreHome
# 修改为
:checkPentahoJavaHome
if not "%JAVA_HOME%" == "" goto gotJdkHome
if not "%JRE_HOME%" == "" goto gotJreHome
在看我瞎比比
前提
是我们的项目需要用这个可恶的kettle。
在第一次使用的时候我成功的启动了。
于是乎,在使用一次后,每次,初体验结束,spoon开始抗拒我了。从网上找到无数种解决方案,都无法挽回他,还好一直用服务器上的kettle。知道今天,任务开始没那么多了,我再次想要挽回他。
尝试过的方法有:
卸载所有jdk,重装jdk8
在spoon.bat中设置变量
进入正题,读了spoon.bat中的脚本语言后,发现在spoon.bat中跳转到另一个批处理文件,
call "%~dp0set-pentaho-env.bat"
这个批处理文件就是为了定位我们的java位置,中间的重重判定有一句有问题,无法定位到我的jdk
:checkPentahoJavaHome
if exist "%~1\bin\%__LAUNCHER%" goto gotValueFromCaller
if not "%PENTAHO_JAVA_HOME%" == "" goto gotPentahoJavaHome
if exist "%~dp0jre\bin\%__LAUNCHER%" goto gotJreCurrentFolder
if exist "%~dp0java\bin\%__LAUNCHER%" goto gotJavaCurrentFolder
if exist "%~dp0..\jre\bin\%__LAUNCHER%" goto gotJreOneFolderUp
if exist "%~dp0..\java\bin\%__LAUNCHER%" goto gotJavaOneFolderUp
if exist "%~dp0..\..\jre\bin\%__LAUNCHER%" goto gotJreTwoFolderUp
if exist "%~dp0..\..\java\bin\%__LAUNCHER%" goto gotJavaTwoFolderUp
if not "%JAVA_HOME%" == "" goto gotJdkHome
if not "%JRE_HOME%" == "" goto gotJreHome
我的很奇怪的定位到了第一个判定也就是gotValueFromCaller
中去了,实际上当我们定义了java_home环境变量后,一般是跳进gotJdkHome
方法中的。从系统变量中获取值所以我直接把上面的全部删掉了,这样就不会让它判定进入其他分支了。
好的,今天很开心,如果有问题可以提出哦。希望可以帮到你