关于Kettle无法启动的问题,网上给出的大部分解决方案都是修改Spoon.bat / Spoon.sh脚本,主要是修改里面的JVM参数:
if "%PENTAHO_DI_JAVA_OPTIONS%"=="" set PENTAHO_DI_JAVA_OPTIONS="-Xms2058m" "-Xmx1024m" "-XX:MaxPermSize=256m"
修改为:
if "%PENTAHO_DI_JAVA_OPTIONS%"=="" set PENTAHO_DI_JAVA_OPTIONS="-Xms512m" "-Xmx512m" "-XX:MaxPermSize=256m"
再说明下jvm的常用几个参数:
-Xms2058mJVM初始分配的堆内存
-Xmx1024mJVM最大允许分配的堆内存,按需分配
-XX:PermSize=128MJVM初始分配的非堆内存
-XX:MaxPermSize=256MJVM最大允许分配的非堆内存,按需分配
原因无非是:
1. -Xms 值超过 -Xmx值,初始值都大于最大值了怎么玩?
2. -Xmx的值和-XX:MaxPermSize的总和超过了JVM内存的最大限制,比如当前操作系统最大内存限制,简单来说就是电脑开的程序太多或者电脑本身内存较小,剩余的内存不够kettle使用。
还有一种原因非常少见,系统命令行编码的问题也会引起kettle无法启动。
这种原因引起的kettle无法启动的表现形式是,kettle一直卡死在启动cmd命令行窗口,死活无法加载出图形界面。
解决办法:
1. 查看cmd编码,如果不是936,也就是GBK编码则改为GBK编码;

2. 修改编码有两种方式:1. 命令行修改(临时修改) 2. 注册表修改(永久有效)。如果选择命令行修改的方式则需要通过命令行来运行kettle.bat脚本,因此为了永绝后患推荐使用注册表修改方式。
命令行修改方式:

注册表方式:
在运行中通过regedit进入注册表
找到HKEY_CURRENT_USER\Console\%SystemRoot%_system32_cmd.exe
新建一个 DWORD(32位值),命名为CodePage,值设为936
已有CodePage的话,修改它,改为十进制,936
该博客主要讨论了在Windows Server 2008环境中,Kettle工具因命令行编码问题导致无法启动的情况。常见解决方案包括调整JVM参数,如-Xms和-Xmx,以及解决系统命令行编码不匹配(从非GBK改为GBK)的问题。博主提供了通过命令行临时修改和注册表永久修改CMD编码的方法,建议使用注册表修改以确保永久解决。
831





