1.问题描述
最近在用Azkaban调用Shell的时候,失败了。。。查看日志,报了NullPointerException,当时也不知道是怎么回事,具体的报错信息如下:
*******************************************************************************
Nov 25, 2019 4:48:44 PM org.apache.karaf.main.Main$KarafLockCallback lockAquired
INFO: Lock acquired. Setting startlevel to 100
2019/11/25 16:48:44 - Kitchen - Logging is at level : Basic
2019/11/25 16:48:44 - Kitchen - Start of run.
java.lang.NullPointerException
at org.pentaho.di.core.plugins.PluginRegistry.getPluginId(PluginRegistry.java:689)
at org.pentaho.di.core.plugins.PluginRegistry.getPlugin(PluginRegistry.java:715)
at org.pentaho.di.core.plugins.PluginRegistry.loadClass(PluginRegistry.java:370)
at org.pentaho.di.base.AbstractBaseCommandExecutor.establishRepositoryConnection(AbstractBaseCommandExecutor.java:195)
at org.pentaho.di.kitchen.KitchenCommandExecutor.execute(KitchenCommandExecutor.java:115)
at org.pentaho.di.kitchen.Kitchen.main(Kitchen.java:286)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.pentaho.commons.launcher.Launcher.main(Launcher.java:92)
2.解决方案
报NullPointerException的错,应该是什么值为空,或者是缺少什么文件。后来我想在Azkaban跑程序的时候,创建的日志是root用户,而一般我用的是普通用户,是不是因为这个呢?
顺着这个线路,通过排查,在root用户下,缺少.kittle文件,普通用户是有的,于是,我就将这个文件cp到root用户的/home/root/下面,在运行,就成功了。
这里 的Azkban服务是用root用户启动的,所以Azkaban应该会默认使用这个用户,可能是造成这个报错的原因。