Reputation: 101
Need some help here. I always get this error:
ERROR! THREAD NAME: New I/O worker #2
java.lang.NullPointerException
at com.rs.game.player.content.DungeoneeringShop.open(DungeoneeringShop.java:12)
at com.rs.game.player.dialogues.DungTutor.run(DungTutor.java:36)
at com.rs.game.player.DialogueManager.continueDialogue(DialogueManager.java:31)
at com.rs.net.decoders.WorldPacketsDecoder.processPackets(WorldPacketsDecoder.java:1130)
at com.rs.net.decoders.WorldPacketsDecoder.decode(WorldPacketsDecoder.java:268)
at com.rs.net.ServerChannelHandler.messageReceived(ServerChannelHandler.java:98)
at org.jboss.netty.channel.SimpleChannelHandler.handleUpstream(SimpleChannelHandler.java:95)
at org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:563)
at org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:558)
at org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:268)
at org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:255)
at org.jboss.netty.channel.socket.nio.NioWorker.read(NioWorker.java:91)
at org.jboss.netty.channel.socket.nio.AbstractNioWorker.processSelectedKeys(AbstractNioWorker.java:373)
at org.jboss.netty.channel.socket.nio.AbstractNioWorker.run(AbstractNioWorker.java:247)
at org.jboss.netty.channel.socket.nio.NioWorker.run(NioWorker.java:35)
at org.jboss.netty.util.ThreadRenamingRunnable.run(ThreadRenamingRunnable.java:102)
at org.jboss.netty.util.internal.DeadLockProofWorker$1.run(DeadLockProofWorker.java:42)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Here is my class:
package com.rs.game.player.content;
import com.rs.game.player.Player;
public class DungeoneeringShop {
private static final int INTERFACE_ID = 72;
public static Player player;
public static void open() {
for(int i = 69; i < 73; i++)
player.getPackets().sendHideIComponent(INTERFACE_ID, i, false);
player.getInterfaceManager().sendInterface(INTERFACE_ID);
}
}
Upvotes: 1
Views: 144
Reputation: 122026
You haven't initilized player
. So it is null
.
It's like
null.getPackets() --------------> NullPointerException
So resolution is initialize it before using like
public static Player player = new Player(); // at declaration level
or
player = new Player(); // or later some where before using.
Upvotes: 4
Reputation: 30284
Because you haven't initialized player object yet. It should be :
package com.rs.game.player.content;
import com.rs.game.player.Player;
public class DungeoneeringShop {
private static final int INTERFACE_ID = 72;
public static Player player;
public static void open() {
player = new Player(); // or some other constructor of this class
for(int i = 69; i < 73; i++)
player.getPackets().sendHideIComponent(INTERFACE_ID, i, false);
player.getInterfaceManager().sendInterface(INTERFACE_ID);
}
}
I think you're a new comer to Java World. And you are learning from game development ebook. You should learn base Java more, before came to this.
Hope this help :)
Upvotes: 1
Reputation: 5684
You have to instantiate your variable player
. In your example player
is null
.
For example if you have a parameterless constructor:
public static Player player = new Player();
Upvotes: 3
Reputation: 19304
You need to instantiate
public static Player player;
before accessing it.
Upvotes: 1