孩紫MC
RT  礼包的交互事件用了头颅来做材质 但日常跑插件的时候会报空指针错误 思前想后也无法解决这问题
因跨版本支持,所以使用了国外开发者开发的XMaterial

如图所示


代码如下 (其实应该是两层if的 可是构建出来就成这个样子)




已知下列可能造成报NPE错误的条件
1、已知服务器安装了粘液科技插件 版本号为4.1.15

2、因为粘液科技的物品含有lore,而礼包的头颅也含有lore

尝试解决NP报错的方法
1、给头颅加本地化名字,但经过测试之后发现,依然NPE错误
2、由于之前是直接获取getInventory之后才getItem,所以大概会出现NPE报错,后续改成获取玩家主手来getItem

经过上述测试与排查 在本地测试途中安装相关会调用头颅的插件进行过测试,并没有产生报空指针的问题

提问:该如何解决NPE的报错问题 虽然不会影响实际使用  但属实看着难受




纱夜
本帖最后由 阴阳师元素祭祀 于 2021-10-14 07:27 编辑

会不会是你在检查itemStack之前就直接获取meta而不检查
另外meta有没有可能为null
(建议给出源代码与行数(或者加反编译的行数


拍卖官v
建议getItemHand()以及getItemMeta()之后都进行判空检查,因为玩家未必手上拿着物品以及物品未必存在meta

孩紫MC
拍卖官v 发表于 2021-10-14 09:24
建议getItemHand()以及getItemMeta()之后都进行判空检查,因为玩家未必手上拿着物品以及物品未必存在meta ...

我也这么想的 可是空指针的问题的无法复现 就很头大。。。

Ph-苯
孩紫MC 发表于 2021-10-14 09:51
我也这么想的 可是空指针的问题的无法复现 就很头大。。。

无法复现?无论如和都无法复现吗?

孩紫MC
Ph-苯 发表于 2021-10-14 10:32
无法复现?无论如和都无法复现吗?

对 跟头颅有关的都测了 没法复现

Ph-苯
孩紫MC 发表于 2021-10-14 10:35
对 跟头颅有关的都测了 没法复现

那是不是不是由代码导致的,只是偶尔程序运行异常?

孩紫MC
Ph-苯 发表于 2021-10-14 10:36
那是不是不是由代码导致的,只是偶尔程序运行异常?

本地测是没办法 丢服务器就刷NPE了 无解

Ph-苯
孩紫MC 发表于 2021-10-14 10:40
本地测是没办法 丢服务器就刷NPE了 无解

那有没有可能是访问了什么仅客户端的变量?