Java 存在的ImageIcon上的NullPointerException

Java 存在的ImageIcon上的NullPointerException,java,nullpointerexception,jframe,imageicon,Java,Nullpointerexception,Jframe,Imageicon,我正在和几个朋友做一个基本的游戏。即使文件中存在png,尝试从类平铺加载和创建imageIcon图像也会引发nullPointerException 下面是调用该文件的board类 public Board(String name){ super("Monopoly"); setLayout(new GridBagLayout()); die = new Dice(); andy = new Human(name, 1200, new ImageIcon("as

我正在和几个朋友做一个基本的游戏。即使文件中存在png,尝试从类平铺加载和创建imageIcon图像也会引发nullPointerException

下面是调用该文件的board类

public Board(String name){
    super("Monopoly");
    setLayout(new GridBagLayout());

    die = new Dice();
    andy = new Human(name, 1200, new ImageIcon("assets/img/redBullet.png"));
    blank = new ImageIcon("assets/img/white.png");
    paid = false;
    tile1 = new Tile(1,"normal", 100, new ImageIcon(getClass().getResource("assets/img/redBullet.png")));
然后它继续呼叫

        tile1.getImage().paintIcon(board, getGraphics(),((int)andy.getPos().getX()), ((int)andy.getPos().getY()));
tile构造函数如下所示

public Tile(int Position, String Type, int Price, ImageIcon img)
{
    position = Position;
    type = Type;
    price = Price;
    image = img;
}
有任何帮助吗?这是tile1.getImage()行上的nullPointerException

编辑:

堆栈跟踪

第246行是调用方法

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at javax.swing.ImageIcon.paintIcon(ImageIcon.java:413)
at Game.Board.<init>(Board.java:264)
at Game.MainMenu$1.actionPerformed(MainMenu.java:81)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
at java.awt.Component.processMouseEvent(Component.java:6516)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3321)
at java.awt.Component.processEvent(Component.java:6281)
at java.awt.Container.processEvent(Container.java:2229)
at java.awt.Component.dispatchEventImpl(Component.java:4872)
at java.awt.Container.dispatchEventImpl(Container.java:2287)
at java.awt.Component.dispatchEvent(Component.java:4698)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
at java.awt.Container.dispatchEventImpl(Container.java:2273)
at java.awt.Window.dispatchEventImpl(Window.java:2719)
at java.awt.Component.dispatchEvent(Component.java:4698)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:740)
at java.awt.EventQueue.access$300(EventQueue.java:103)
at java.awt.EventQueue$3.run(EventQueue.java:699)
at java.awt.EventQueue$3.run(EventQueue.java:697)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
at java.awt.EventQueue$4.run(EventQueue.java:713)
at java.awt.EventQueue$4.run(EventQueue.java:711)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:710)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)
线程“AWT-EventQueue-0”java.lang.NullPointerException中的异常 位于javax.swing.ImageIcon.paintIcon(ImageIcon.java:413) 在Game.Board.(Board.java:264) 在Game.MainMenu$1.actionPerformed(MainMenu.java:81) 在javax.swing.AbstractButton.fireActionPerformed上(AbstractButton.java:2018) 位于javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341) 在javax.swing.DefaultButtonModel.fireActionPerformed上(DefaultButtonModel.java:402) 在javax.swing.DefaultButtonModel.setPressed中(DefaultButtonModel.java:259) 在javax.swing.plaf.basic.BasicButtonListener.MouseRelease(BasicButtonListener.java:252) 位于java.awt.Component.ProcessMouseeEvent(Component.java:6516) 位于javax.swing.JComponent.ProcessMouseeEvent(JComponent.java:3321) 位于java.awt.Component.processEvent(Component.java:6281) 位于java.awt.Container.processEvent(Container.java:2229) 位于java.awt.Component.dispatchEventImpl(Component.java:4872) 位于java.awt.Container.dispatchEventImpl(Container.java:2287) 位于java.awt.Component.dispatchEvent(Component.java:4698) 位于java.awt.LightweightDispatcher.RetargetMouseeEvent(Container.java:4832) 位于java.awt.LightweightDispatcher.ProcessMouseeEvent(Container.java:4492) 位于java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422) 位于java.awt.Container.dispatchEventImpl(Container.java:2273) 位于java.awt.Window.dispatchEventImpl(Window.java:2719) 位于java.awt.Component.dispatchEvent(Component.java:4698) 位于java.awt.EventQueue.dispatchEventImpl(EventQueue.java:740) 在java.awt.EventQueue.access$300(EventQueue.java:103) 位于java.awt.EventQueue$3.run(EventQueue.java:699) 位于java.awt.EventQueue$3.run(EventQueue.java:697) 位于java.security.AccessController.doPrivileged(本机方法) 位于java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76) 位于java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87) 在java.awt.EventQueue$4.run(EventQueue.java:713) 在java.awt.EventQueue$4.run(EventQueue.java:711) 位于java.security.AccessController.doPrivileged(本机方法) 位于java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76) 位于java.awt.EventQueue.dispatchEvent(EventQueue.java:710) 位于java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242) 在java.awt.EventDispatchThread.PumpeEventsforFilter(EventDispatchThread.java:161) 位于java.awt.EventDispatchThread.PumpeEventsforHierarchy(EventDispatchThread.java:150) 位于java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146) 位于java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138) 在java.awt.EventDispatchThread.run(EventDispatchThread.java:91)
该行有几个方法调用,可能导致NPE。尝试使用临时变量将它们分散在几行上,这样会更容易发现实际的错误。尝试
“/assets/img/redBullet.png”
。与Board类的包无关。还要注意,路径是区分大小写的(在jar内或Linux上)。检查jar(=zuip文件(包含该路径。堆栈跟踪会很好。我将行拆分,但它没有得到我的getGraphics().toString(),但可能是我!我尝试将其更改为“/assets/img/redBullet.png”无效!