处理用户登录ERP系统报错空指针(java.lang.NullPointerException)的问题

时间:2024-04-01 20:28:47

一大早碰到一个很郁闷的问题,某些用户在登陆的时候,报了这个错误:

处理用户登录ERP系统报错空指针(java.lang.NullPointerException)的问题

处理用户登录ERP系统报错空指针(java.lang.NullPointerException)的问题

刚刚好最近又批量更新过员工,很担心是不是更新员工影响到用户登陆了?虽然正常来说应该不至于。

但是,问题还是得好好处理一下。

毕竟偶也算是玩了好几年的Java,还弄过自己的小作品的,所以这点小问题,还是难不了我。

接着,详细分析错误:

处理用户登录ERP系统报错空指针(java.lang.NullPointerException)的问题

错误关键字:
java.lang.NullPointerException
at oracle.apps.fnd.framework.favorites.webui.ICXFavoritesPortletCO.processRequest (ICXFavoritesPortletCO.java:239)
根据错误的关键字Favorites,并且配合用户登录而报的异常错误,猜测问题,应该是登录之后,系统渲染登录主页出现了异常(空指针),而且这个异常是出现在处理收藏夹的时候(Favorites)。

所以,处理问题得先找出收藏夹的数据来源是从哪个表格。
在登录主页的OAF界面,查看个性化收藏夹:

处理用户登录ERP系统报错空指针(java.lang.NullPointerException)的问题

处理用户登录ERP系统报错空指针(java.lang.NullPointerException)的问题


到后台查询数据:
SELECT * FROM FND_USER WHERE USER_NAME  = 'DMAFL3'

  SELECT ICXCustomMenuEntriesEO.RESPONSIBILITY_APPLICATION_ID
        ,ICXCustomMenuEntriesEO.RESPONSIBILITY_ID
        ,ICXCustomMenuEntriesEO.SECURITY_GROUP_ID
        ,ICXCustomMenuEntriesEO.PROMPT
        ,ICXCustomMenuEntriesEO.FUNCTION_ID
        ,ICXCustomMenuEntriesEO.FUNCTION_TYPE
        ,ICXCustomMenuEntriesEO.URL
        ,ICXCustomMenuEntriesEO.USER_ID
        ,ICXCustomMenuEntriesEO.PLUG_ID
        ,ICXCustomMenuEntriesEO.DISPLAY_SEQUENCE
        ,ICXCustomMenuEntriesEO.REFERENCE_PATH
        ,ICXCustomMenuEntriesEO.FAVORITE_TYPE
    FROM ICX_CUSTOM_MENU_ENTRIES ICXCustomMenuEntriesEO
   WHERE 1=1--ICXCustomMenuEntriesEO.REFERENCE_PATH = :1
     AND ICXCustomMenuEntriesEO.USER_ID = 13583
ORDER BY DISPLAY_SEQUENCE
发现有一笔数据很奇怪的,FUNCTION TYPE=XXX,别的都是空。

处理用户登录ERP系统报错空指针(java.lang.NullPointerException)的问题
大胆猜测,就是用户登录的时候,主页page需要做页面的渲染数据处理,而这笔数据在处理生成右边的收藏夹的时候,由于找不到Function,所以报了一个空指针的错误。
然而,这个是否必须的?如果删掉了会不会有别的bug?所以我试看最近新增的一个用户,收藏夹的数据实际上可以为空的。

所以,简单的处理,就是删掉它,就行。因为并没什么风险,收藏夹的数据删错了让他们重新加就行,所以数据只是做了一个本地的导出备份。
DELETE ICX_CUSTOM_MENU_ENTRIES ICXCustomMenuEntriesEO
   WHERE 1=1--ICXCustomMenuEntriesEO.REFERENCE_PATH = :1
     AND ICXCustomMenuEntriesEO.USER_ID = 13583

修改数据后,重新登录,该用户已经可以正常登录系统。问题解决!

处理用户登录ERP系统报错空指针(java.lang.NullPointerException)的问题