项目在NetBeans上运行正常,但.jar会出错

时间:2012-06-26 15:47:34

标签: java netbeans

我在NetBeans上运行我的项目但是我无法成功运行.jar文件。 1。我正在使用Java类库开发我的项目,后来发现清单文件中存在一些问题。 。 2.然后为了解决上述问题我创建了项目作为JavaApplication项目,现在显示如下

Manifest-Version: 1.0
Ant-Version: Apache Ant 1.8.3
Created-By: 1.6.0_22-b22 (Sun Microsystems Inc.)
Class-Path: 
Main-Class: gameloftbraker.GameLoftBraker
终端上的

会抛出以下异常:

Exception in thread "main" java.lang.NullPointerException
    at javax.swing.ImageIcon.<init>(ImageIcon.java:204)
    at gameloftbraker.Ball.<init>(Ball.java:26)
    at gameloftbraker.Arena.gameInit(Arena.java:71)
    at gameloftbraker.Arena.addNotify(Arena.java:67)
    at java.awt.Container.addNotify(Container.java:2584)
    at javax.swing.JComponent.addNotify(JComponent.java:4687)
    at java.awt.Container.addNotify(Container.java:2584)
    at javax.swing.JComponent.addNotify(JComponent.java:4687)
    at java.awt.Container.addNotify(Container.java:2584)
    at javax.swing.JComponent.addNotify(JComponent.java:4687)
    at javax.swing.JRootPane.addNotify(JRootPane.java:754)
    at java.awt.Container.addNotify(Container.java:2584)
    at java.awt.Window.addNotify(Window.java:707)

提前感谢您的帮助。我希望我没有遗漏任何东西。代码在构建和运行成功时没有问题,如果需要代码,请告诉我。

Ball.java

////////////////
package gameloftbraker;

import javax.swing.ImageIcon;

public class Ball extends Graphc implements Commn {

    protected String ball = "../images/ball.png"; //address to ball graphic
    protected int xdir;      

    protected int ydir;

    public Ball(){  
        xdir =  2;
        ydir = -2;

        ImageIcon img = new ImageIcon(this.getClass().getResource(ball));
        image = img.getImage();

        height = image.getHeight(null);
        width = image.getWidth(null);

        resetState();
    }
// rest of the functions * it works perfectly as project but unable to run in .jar
}

2 个答案:

答案 0 :(得分:1)

如果您向我们展示Ball的代码,突出显示堆栈跟踪中显示的行...这会有所帮助...但我的猜测是您没有捆绑图形让你的游戏正确进入jar文件。

有一点需要指出:

  

代码在构建和运行成功时没有问题

现在成功运行了,是吗?在一个环境中成功构建和运行并不意味着代码中没有问题。例如,你可能在那里有任何其他机器上没有的硬编码文件名 - 我并不是说这里的 案例,我只是说“可以使用”我的机器“并不能证明代码没有问题。

编辑:现在我们可以看到您的代码,看起来ball.png可能不在jar文件中。 问题是您在资源名称中使用..。尝试将资源名称更改为:

// TODO: Make this private static final unless you have any reason not to...
protected String ball = "/images/ball.png";

答案 1 :(得分:1)

如果你想在jar外使用数据(例如图片),请使用:

ImageIcon img = new ImageIcon(ball);
在IDE上运行

你只有文件夹,所以它的工作原理。在jar文件中你必须保留jar文件,我认为用你的方式是不可能的