2012-06-26 2 views
1

Я запускаю свой проект на NetBeans, но я не могу успешно запустить файл .jar. 1. Я разрабатывал свой проект с использованием библиотеки Java Class, а затем обнаружил, что в файлах манифеста есть некоторая проблема. , 2. Тогда для решения вышеуказанной проблемы я создал проект как проект JavaApplication, в настоящее время проявляются выглядит такПроект работает отлично на NetBeans, но .jar дает ошибки

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 
} 

ответ

1

Это помогло бы, если бы вы показать нам код Ball, выделяя строки, показанные в StackTrace ... но мой догадка, что вы не в комплекте графика для вашей игры в файл jar правильно.

Одна вещь, чтобы указать на:

Там нет никаких проблем в коде, как это построить и работает успешно

Ну это не работает успешно в настоящее время, не так ли? Создание и запуск успешно в один окружающая среда не означает, что в коде нет проблем. Например, у вас могут быть жестко закодированные имена файлов, которые отсутствуют на любой другой машине - я не предлагаю, чтобы на самом деле был здесь, я просто говорю, что «работает на моей машине» isn ' t доказательство, что в коде нет проблем.

EDIT: теперь, когда мы можем видеть ваш код, похоже, что ball.png может не быть в файле jar. или проблема заключается в использовании вами .. в названии ресурса. Попробуйте изменить название ресурса:

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

Я использую NetBeans 7.1.0. И на данный момент я пытаюсь запустить его на той же машине, что и .jar и тот же O.S. Он не работает как .jar, но он работает в IDE – Harshit

+0

@ user595169: Как я уже сказал, похоже, что вы не связываете файл ball.png в своем файле jar. Поэтому сначала проверьте это. –

+0

его там в моем .jar/images/.. – Harshit

1

Если вы хотите использовать данные (например, изображения) за пределами баночки просто используйте:

ImageIcon img = new ImageIcon(ball); 

на IDE перспективе у вас есть только папки, поэтому она работает. В файле jar вам нужно оставить файл jar, и я думаю, что это невозможно с вашим путем.

+0

Так что теперь, согласно вам, я должен пойти в свою.java-файлы и изменить его, а затем снова построить его У меня есть сомнение в том, какой путь ресурса я должен предоставить, на данный момент в моем текущем .jar он сохраняет файлы в папке с изображениями, так что это должно быть как /Images/ball.png? – Harshit

+0

или попробуйте использовать «/images/ball.png» или «images/ball.png», если фотография находится внутри банки – nidomiro

+0

с вашей структурой является: /java.jar!/classes /java.jar!/images или/изображений? – nidomiro