总结:在命令行中执行spoon.bat只要不是Using JAVA_HOME都是存在问题 ,正常启动图应该是这样的。本次结合网络内容尝试了四种方式,直到最后才发现,花了三个多小时才找到问题所在,现在回想起来是在是心有余悸。
错误结果
尝试一 通过spoondebug.bat查看调试错误信息
查看报错日志:执行spoondebug.bat即可,本目录下会生成一个spoondebug.txt信息文档,查看其中的内容
报错日志中提示的内容是在spoon.bat批处理文件中的关于--add-opens参数的问题,大概意思就是--add-opens 是 Java 9 引入的一个新选项,用于模块化系统,允许反射时访问特定的包。如果你的 Java 版本低于 9,你会遇到这个问题。但事实上该因素只是发生此问题的其中一个因素之一,本次的产生原因不是这个。
尝试二 程序启动过程中内存占用的问题
在kettle中是可以分别指定在程序启动时、运行时以及每个线程所需要的空间大小的,怀疑是由于原本默认的大小过大了导致与自己电脑不相匹配。于是将设定内存改小了,但结果还是失败,可见不是这个问题。具体更改方式如下:
在spoon.bat中找到如下代码
将对应xms、xmx、xss参数改小就行,具体参数描述如下:
xms | 是指设定程序启动时占用内存大小。一般来讲,大点,程序会启动的快一点,但是也可能会导致机器暂时间变慢。 |
xmx | 是指设定程序运行期间最大可占用的内存大小。如果程序运行需要占用更多的内存,超出了这个设置值,就会抛出OutOfMemory异常。 |
xss | 是指设定每个线程的堆栈大小。这个就要依据你的程序,看一个线程大约需要占用多少内存,可能会有多少线程同时运行等。 |
以上三个参数的设置都是默认以Byte为单位的,也可以在数字后面添加[k/K]或者[m/M]来表示KB或者MB。而且,超过机器本身的内存大小也是不可以的,否则就等着机器变慢而不是程序变慢了。
尝试三 双重文件夹错误问题
这个错误原因暂不得而知,是看到网上的帖子有人这样做才来看看的,大家可以参考一下,我本次的问题也不是这个。
详细可见
尝试四 偶然间的发现(已解决!成功的彼岸!!胜利的喜悦!!!)已在文章开始的时候提出
在命令行中启动spoon,发现启动的路径与自己的不符。如果出现问题在启动kettle,通过命令行指定目录输入spoon.,bat运行最好,可以看到是哪一环节的运行过程出现了问题。
错误启动样例
正确启动样例
因为发现启动的JAVA_HOME与自己设定的不同,而且自己也没有设定什么奇奇怪怪的路径,反正错误路径看着是怎么看怎么不顺眼,于是我在错误路径的提示下找到了罪魁祸首,尽管我已经设定了环境变量,但是kettle程序还是默认读取了错误的,导致找不到jre,进而创建不了JVM,把那个错误路径的jdk删除或者卸载就可以。该执行路径的配置文件是在set-pentaho-env.bat这个文件里面的,但是这次我用了绝对路径指定程序执行的jdk,程序还是执行了原来那个错误的,无奈之下只能删除错误路径,然后发现其自动更改成了正确的执行路径,大概是错误路径的优先级比原来的高吧,毕竟设置环境变量也是实现文件查询的扩展,简单来说也是设定了全局优先级。