Exception while invoking run java.lang.NullPointerException [дубликат]

168
16 марта 2019, 05:20

На данный вопрос уже ответили:

  • Что такое Null Pointer Exception и как его исправить? 4 ответа

Вот ошибка:

2018-10-29 05:59:07 [CRITICAL] Exception while invoking run java.lang.NullPointerException 
  at KKDevs.Main.STask.onRun(STask.java:17) 
  at cn.nukkit.scheduler.Task.run(Task.java:51) 
  at cn.nukkit.scheduler.TaskHandler.run(TaskHandler.java:99) 
  at cn.nukkit.scheduler.ServerScheduler.runTasks(ServerScheduler.java:296) 
  at cn.nukkit.scheduler.ServerScheduler.mainThreadHeartbeat(ServerScheduler.java:277) 
  at cn.nukkit.Server.tick(Server.java:1084) 
  at cn.nukkit.Server.tickProcessor(Server.java:853) 
  at cn.nukkit.Server.start(Server.java:830) 
  at cn.nukkit.Server.<init>(Server.java:513) 
  at cn.nukkit.Nukkit.main(Nukkit.java:109)

а вот код:

package KKDevs.Main;
import cn.nukkit.Player;
import cn.nukkit.scheduler.PluginTask;
import jline.internal.Nullable;
public class STask extends PluginTask < Strap > {
public STask(Strap owner) {
super(owner);
}
@Nullable
public void onRun(int currentTick) {
Strap owner = this.owner;
for (Player p: owner.getServer().getOnlinePlayers().values()){
  p.updateBossBar(owner.getBossText(), 100, owner.bossbar.get(p));
 }
}
}

а вот код главного файла:

public class Strap extends PluginBase implements Listener {
public HashMap<Player, Long> bossbar = new HashMap<Player, Long>();
@Override
public void onEnable() {
getServer().getPluginManager().registerEvents(this, this);
getServer().getScheduler().scheduleRepeatingTask(new STask(this), 2);
this.getLogger().info(TextFormat.GREEN + "Done!");
}
@EventHandler(priority = EventPriority.NORMAL)
public void onJoin(PlayerJoinEvent e) {
for (Player p: getServer().getOnlinePlayers().values()) {
String name = p.getName();
bossbar.put(p, p.createBossBar(getBossText(), 100));
String msg = String.valueOf(e.getJoinMessage());
if (e.getJoinMessage().toString().trim().length() > 0) {
this.BroadCastPopUp(this.getServer().getLanguage().translateString(msg,
new String[] {
 name
}));
 e.setJoinMessage(String.valueOf(""));
}
}
 }
public String getBossText() {
for (Player p: getServer().getOnlinePlayers().values()) {
 String getNick = p.getName();
 int getOnline = this.getServer().getOnlinePlayers().size();
 String[] RC = {
 "§l§f",
 "§l§a",
 "§l§e",
 "§l§b",
 "§l§6"
  };
 String getRandomColor = RC[new Random().nextInt(RC.length)];
 TextFormat GREEN = TextFormat.GREEN;
 TextFormat BLUE = TextFormat.BLUE;
 String text = TextFormat.WHITE + "     §l>>   " + getRandomColor + "Добро 
 пожаловать на " + GREEN + "Balerix" + getRandomColor + ", " + BLUE + 
 getNick + getRandomColor + " | Онлайн: " + getOnline + TextFormat.WHITE + "   
 <<";
 return text;
}
return getBossText();
}
 @EventHandler(priority = EventPriority.NORMAL)
  public void onDeath(PlayerDeathEvent e) {
  String name = e.getEntity().getName();
  String message = String.valueOf(e.getDeathMessage());
  if (e.getDeathMessage().toString().trim().length() > 0) {

 this.BroadCastPopUp(this.getServer().getLanguage().translateString(message,
 new String[] {
  name
 }));
  e.setDeathMessage(String.valueOf(""));
 }
 }
  @EventHandler(priority = EventPriority.NORMAL)
  public void onQuit(PlayerQuitEvent e) {
  String name = e.getPlayer().getName();
  String message = String.valueOf(e.getQuitMessage());
  if (e.getQuitMessage().toString().trim().length() > 0) {
 this.BroadCastPopUp(this.getServer().getLanguage().translateString(message,
  new String[] {
  name
 }));
 e.setQuitMessage(String.valueOf(""));
 }
 }
 public void BroadCastPopUp(String str) {
for (Player p: new ArrayList < > 
(this.getServer().getOnlinePlayers().values())) {
 p.sendPopup("");
 }
 }
 @Override
 public void onDisable() {
 this.getLogger().info(TextFormat.RED + "Disable!");
 }
 }
Answer 1

StackTrace указывает, что ошибка возникает в данной строке

p.updateBossBar(owner.getBossText(), 100, owner.bossbar.get(p));

Видимо какое-то из данных полей является null, скорее всего owner.bossbar. Необходимо зайти в данное место дебагером и проверять поля или же выводить логи, для проверки, все ли элементы являются не null.

READ ALSO
Почему IntelliJ советует мне сделать методы package-private?

Почему IntelliJ советует мне сделать методы package-private?

В коде есть геттеры/сеттеры, IntelliJ все время выдает warning и пишет, что access can be private-packageНо если я сделаю доступ private, то у меня в коде будут ошибки

120
java - Использование массивов [закрыт]

java - Использование массивов [закрыт]

Нужно перемножить все числа с индексами в диапазоне от 20 до 30

149
Почему у меня не работают boundary timers (использую Activiti 6)?

Почему у меня не работают boundary timers (использую Activiti 6)?

Не срабатывают boundary timersИспользую Activiti 6

164
Как расширить List в цикле?

Как расширить List в цикле?

Есть массив String, перевожу его в List, добавляю в циклЕсли в первом if срабатывает условие, то необходимо добавить в List символ

135