Java Hello World应用程序在启动时显示图像时不执行任何操作

Java Hello World应用程序在启动时显示图像时不执行任何操作,java,netbeans,jdk1.6,Java,Netbeans,Jdk1.6,我用JFrame/JPanel创建了一个小的“hello world”应用程序,它在我的IDE(Netbeans)中完美地工作。我使用Graphics.drawString()在屏幕上绘制了一个字符串,对它进行了测试,它在浏览器和内置的.Jar文件中都运行良好 我决定添加一个映像来测试它(我是Java新手),这个应用程序继续在IDE中运行,但是build.Jar文件没有启动任何东西,也没有给出任何错误 以下是两个类文件: Boxy_Main.java: package boxy; import

我用
JFrame
/
JPanel
创建了一个小的“hello world”应用程序,它在我的IDE(Netbeans)中完美地工作。我使用
Graphics.drawString()
在屏幕上绘制了一个字符串,对它进行了测试,它在浏览器和内置的.Jar文件中都运行良好

我决定添加一个映像来测试它(我是Java新手),这个应用程序继续在IDE中运行,但是build.Jar文件没有启动任何东西,也没有给出任何错误

以下是两个类文件:

Boxy_Main.java:

package boxy;

import javax.swing.JFrame;
import java.awt.*;

public class Boxy_Main extends JFrame {

    public static Boxy_Main main;

    public Boxy_Main() {
        add(new Board());
        setTitle("Boxy");
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        setSize(467, 700);
        setLocationRelativeTo(null);
        setVisible(true);
        setResizable(true);
    }
    public static void main(String[] args) {
        main = new Boxy_Main();
    }
}
Board.java:

package boxy;

import javax.swing.JPanel;
import java.awt.*;
import javax.swing.*;

public class Board extends JPanel {

    public Graphics2D g2d;
    public Graphics g;
    public Image hello_image;

    public Board() {

        this.set_properties();

    }

    public void set_properties() {

        this.hello_image = new ImageIcon(Board.class.getResource("../images/LKRZV.jpg")).getImage();


    }

    public void paint(Graphics g) {

        this.g = g;
        this.g2d = (Graphics2D) g;


        this.g2d.drawImage(this.hello_image, null, this);

        this.g.drawString("hello", 100, 80);
        this.g.drawString("world", 100, 94);


    }
}
如果我不加评论

this.hello_image = new ImageIcon(Board.class.getResource("../images/LKRZV.jpg")).getImage();

它继续完美地工作

我自己也尝试过解决这个问题,但我无法通过google或stack overflow找到任何东西。这是一个很难构思的搜索短语


有人知道为什么它会在NetBeans中运行,而不是作为一个独立的.Jar运行吗

您的问题就在这一行

this.hello_image = new ImageIcon(Board.class.getResource("../images/LKRZV.jpg")).getImage();

当您在NetBeans中运行时,“./images.LKRZV.jpg”路径是正确的,但是当您运行JAR时它是不正确的。确保提供的路径相对于jar文件的位置是正确的。如果将该路径更改为图像的绝对路径,则程序应能正常工作。最好将图像与jar一起打包。

您的问题就在这一行

this.hello_image = new ImageIcon(Board.class.getResource("../images/LKRZV.jpg")).getImage();

当您在NetBeans中运行时,“./images.LKRZV.jpg”路径是正确的,但是当您运行JAR时它是不正确的。确保提供的路径相对于jar文件的位置是正确的。如果将该路径更改为图像的绝对路径,则程序应能正常工作。最好将图像与jar一起打包。

从jar文件加载资源相当棘手。尝试仅注释掉drawImage(…@kw4nta我忘了指定这是我尝试的第一件事。问题仍然存在,因此它肯定与图像加载有关,而不是与绘图有关。然而,mrranstrom指出了我的错误,我使用了一个相对路径,一旦应用程序是Jar,它就不适用。从Jar文件加载Resources相当棘手。尝试仅注释掉drawImage(…@kw4nta我忘了指定这是我尝试的第一件事。问题仍然存在,因此它肯定与图像加载有关,而不是与绘图有关。然而,mrranstrom指出了我的错误,我使用了一个相对路径,一旦应用程序是a,它就不适用。jarWow,谢谢你。我觉得没有这个路径像个白痴想到这一点。现在我觉得我不必要地污染了S.O.。哇,谢谢。我觉得自己是个白痴,因为我没有想到这一点。现在我觉得我不必要地污染了S.O。。。