1

我正在创建一个基本的“乒乓球”游戏。我已经完成了游戏,除了一些我需要删除的小故障。游戏在 netbeans 中运行完美,但如果我创建一个 jar 文件错误会导致它无法工作。我对java很陌生,但我相信这与我的代码寻找图像有关,但图像尚未加载。这是错误。我怎样才能让它在 jar 文件中的 netbeans 之外工作?

C:\Users\michael>java -jar "C:\Users\michael\Documents\NetBeansProjects\Pong\dis
t\Pong.jar"
Exception in thread "main" java.lang.NullPointerException
        at javax.swing.ImageIcon.<init>(Unknown Source)
        at pong.BallMainMenu.<init>(BallMainMenu.java:19)
        at pong.Board.gameInit(Board.java:93)
        at pong.Board.addNotify(Board.java:86)
        at java.awt.Container.addNotify(Unknown Source)
        at javax.swing.JComponent.addNotify(Unknown Source)
        at java.awt.Container.addNotify(Unknown Source)
        at javax.swing.JComponent.addNotify(Unknown Source)
        at java.awt.Container.addNotify(Unknown Source)
        at javax.swing.JComponent.addNotify(Unknown Source)
        at javax.swing.JRootPane.addNotify(Unknown Source)
        at java.awt.Container.addNotify(Unknown Source)
        at java.awt.Window.addNotify(Unknown Source)
        at java.awt.Frame.addNotify(Unknown Source)
        at java.awt.Window.show(Unknown Source)
        at java.awt.Component.show(Unknown Source)
        at java.awt.Component.setVisible(Unknown Source)
        at java.awt.Window.setVisible(Unknown Source)
        at pong.Pong.<init>(Pong.java:16)
        at pong.Pong.main(Pong.java:23)
4

2 回答 2

2

我怀疑您正在编写相对于工作目录的文件 url,当您在 NetBeans 中执行它时可能会有所不同(取决于您从控制台运行它时的执行位置)。

例如,当从 netbeans 项目运行时,工作目录很可能是 C:\Users\michael\Documents\NetBeansProjects\Pong,在您的另一个示例中,工作目录的位置只是“C:\Users\michael\”

假设您正在从路径“myimages/test.jpg”加载图像。从 netbeans 运行时,这将变为 "C:\Users\michael\Documents\NetBeansProjects\Pong\myimages\test.jpg" ,在另一个示例中将变为 "C:\Users\michael\myimages\test.jpg" .

尝试使用以下方法来访问资源

getClass().getResource("/myimage/test.jpg");

http://docs.oracle.com/javase/1.4.2/docs/api/java/lang/ClassLoader.html#getResource(java.lang.String )

于 2012-09-25T08:35:38.597 回答
0

您是否已将 Java JDK 和外部库(.jar 文件)添加到系统路径变量中?

当您使用 Netbeans 时,您可以使用此源如何正确使用 Netbeans 部署 Java 项目。要为 Java 设置系统路径,请查看链接。它可能因您的平台而异;即Windows、MacOS等。

于 2012-09-24T23:50:41.680 回答