【问题标题】:Cannot invoke "java.net.URL.toExternalForm()" because "location" is null Java Netbeans Graphics2D无法调用 \"java.net.URL.toExternalForm()\" 因为 \"location\" 为空 Java Netbeans Graphics2D
【发布时间】:2022-11-24 00:32:45
【问题描述】:

我在检测我的图像时遇到问题,它总是说它的位置是空的,不知道该怎么做。 我需要调用图像。 我已经尝试了大多数事情,但仍然无法弄清楚。 我已经在资源包中尝试过,在另一个包中,使用完整路径,但仍然没有。

/*
 * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
 * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
 */
package game.objeto;

import java.awt.GradientPaint;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.geom.AffineTransform;
import java.net.URL;
import javax.swing.ImageIcon;

/**
 *
 * @author sousa
 */
public class Player {
    
    public Player(){
       
        this.image=new ImageIcon(getClass().getResource("resources/plane.png")).getImage();
        this.image_speed=new ImageIcon(getClass().getResource("resources/plane_speed.png")).getImage();
    }
    
    
    public static final double PLAYER_SIZE=64;
    private double x;
    private double y;
    private float angle=0f;
    private final Image image;
    private final Image image_speed;
    
    public void changeAngle(float angle){
        if(angle<0){
            angle=359;
            
        }else if(angle>359){
            angle=0;
        }
        this.angle=angle;
    }
    
    public void draw(Graphics2D g2){
        AffineTransform oldTransform = g2.getTransform();
        g2.translate(x, y);
        g2.drawImage(image, 0,0,null);
        
        
        g2.setTransform(oldTransform);
    }
    
    public double getX(){
        return x;
    }
    
    public double getY(){
        return y;
    }
    
    public float getAngle(){
        return angle;
    }
}

错误是

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException: Cannot invoke "java.net.URL.toExternalForm()" because "location" is null
    at java.desktop/javax.swing.ImageIcon.<init>(ImageIcon.java:232)
    at game.objeto.Player.<init>(Player.java:22)
    at game.componentes.PanelGame.initObjectGame(PanelGame.java:74)
    at game.componentes.PanelGame.start(PanelGame.java:69)
    at game.main.Main$1.windowOpened(Main.java:35)
    at java.desktop/java.awt.Window.processWindowEvent(Window.java:2082)
    at java.desktop/javax.swing.JFrame.processWindowEvent(JFrame.java:298)
    at java.desktop/java.awt.Window.processEvent(Window.java:2044)
    at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:4991)
    at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2324)
    at java.desktop/java.awt.Window.dispatchEventImpl(Window.java:2780)
    at java.desktop/java.awt.Component.dispatchEvent(Component.java:4823)
    at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:775)
    at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:720)
    at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:714)
    at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
    at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
    at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:97)
    at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:747)
    at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:745)
    at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
    at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
    at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:744)
    at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
    at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
    at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
    at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
    at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
    at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
------------------------------------------------------------------------

提前致谢

【问题讨论】:

    标签: java netbeans


    【解决方案1】:

    我猜你的 ar 在 Web 应用程序中。 您是否尝试在“资源”之前添加一个反斜杠?

     this.image=new ImageIcon(getClass().getResource("/resources/plane.png")).getImage();
     this.image_speed=new ImageIcon(getClass().getResource("/resources/plane_speed.png")).getImage()
    

    【讨论】:

      猜你喜欢
      • 2021-06-09
      • 2022-12-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-06-18
      • 2022-11-19
      • 2022-01-07
      相关资源
      最近更新 更多