El juego funciona en netbeans pero no fuera de netbeans en el archivo jar?

Estoy creando un juego básico de 'Pong'. He terminado el juego, aparte de algunos problemas técnicos que necesito eliminar. El juego funciona perfectamente en netbeans, pero si creo un archivo jar aparecen errores que hacen que no funcione. Soy bastante nuevo en Java, pero creo que es algo que tiene que ver con mi código buscando las imágenes, pero las imágenes aún no se han cargado. Aquí está el error. ¿Cómo puedo hacer que esto funcione fuera de netbeans en un archivo jar?

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)
Respuesta 1

Sospecho que está escribiendo las URL del archivo en relación con el directorio de trabajo, que es potencialmente diferente cuando lo ejecuta dentro de NetBeans (dependiendo de dónde lo ejecute cuando lo ejecute desde la consola).

Por ejemplo, cuando se ejecuta esto desde el proyecto netbeans, el directorio de trabajo probablemente sea C: \ Users \ michael \ Documents \ NetBeansProjects \ Pong, ¿dónde está el directorio de trabajo en su otro ejemplo? "C: \ Users \ michael \"

Digamos que está cargando una imagen, desde la ruta "myimages / test.jpg". Cuando se ejecuta desde netbeans, esto se convertiría en "C: \ Users \ michael \ Documents \ NetBeansProjects \ Pong \ myimages \ test.jpg", y se convertiría en "C: \ Users \ michael \ myimages \ test.jpg" en el otro ejemplo .

Intente usar lo siguiente para acceder al recurso

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

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

Respuesta: 2

ACTUALIZACIÓN: Resolví este problema exactamente de la misma manera que lo sugirieron mis amigos. Pero me perdí el hecho de que tengo que seguir el protocolo de mysql para obtener el resultado. En mysql siempre hay un ...

Estoy trabajando en un proyecto corto para buscar una cadena para una subcadena especificada usando recursión. He intentado usar varias cadenas y subcadenas, así como hacer que mi código sea lo más simple posible, pero ...

Cuando le pregunto a la propiedad "totalHits" en mi objeto TopDocs, obtengo el número de visitas. Pero quiero saber "cuántos" documentos se encuentran, no los "resultados totales". Ejemplo: - documento 1: campo A: foo bar -...

En la clase org.apache.commons.lang3.StringUtils, ¿cuál es la diferencia entre splitByWholeSeparator (String, String), splitPreserveAllTokens (String, String) y ...