Java - Error "Exception in thread "main" java.lang.NullPointerException"

 
Vista:
sin imagen de perfil
Val: 33
Ha aumentado 1 puesto en Java (en relación al último mes)
Gráfica de Java

Error "Exception in thread "main" java.lang.NullPointerException"

Publicado por Antiwarrior (6 intervenciones) el 31/03/2021 00:21:13
Soy nuevo en java y estoy haciendo un juego pequeño donde me da un fallo "Exception in thread "main" java.lang.NullPointerException", gracias de antemano. Les dejo el codigo:


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
package principal;
 
import principal.graficos.SuperficieDibujo;
import principal.graficos.Ventana;
import principal.maquinaestado.GestorEstados;
 
public class GestorPrincipal {
 
	private boolean enFuncionamiento = false;
	private String titulo;
	private int ancho;
	private int alto;
 
	private SuperficieDibujo sd;
	private Ventana ventana;
	private GestorEstados ge;
 
	private GestorPrincipal(final String titulo, final int ancho, final int alto) {
		this.titulo = titulo;
		this.ancho = ancho;
		this.alto = alto;
	}
 
	public static void main(String[] args) {
		GestorPrincipal gp = new GestorPrincipal("MS", 640, 340);
 
		gp.iniciarJuego();
		gp.iniciarBuclePrincipal();
	}
 
	private void iniciarJuego() {
 
		enFuncionamiento = true;
		inicializar();
 
	}
 
	private void inicializar() {
		sd = new SuperficieDibujo(ancho, alto);
		ventana = new Ventana(titulo, sd);
		ge = new GestorEstados(sd);
 
	}
 
	private void iniciarBuclePrincipal() {
		int aps = 0;
		int fps = 0;
		final int NS_POR_SEGUNDO = 1000000000;
		final int APS_OBJETIVO = 60;
		final double NS_POR_ACTUALIZACION = NS_POR_SEGUNDO / APS_OBJETIVO;
 
		long referenciaActualizacion = System.nanoTime();
		long referenciaContador = System.nanoTime();
 
		double tiempoTranscurrido;
		double delta = 0;
 
		while (enFuncionamiento) {
			final long inicioBucle = System.nanoTime();
			tiempoTranscurrido = inicioBucle - referenciaActualizacion;
			referenciaActualizacion = inicioBucle;
 
			delta += tiempoTranscurrido / NS_POR_ACTUALIZACION;
 
			while (delta >= 1) {
				actualizar();
				aps++;
				delta--;
			}
			dibujar();
			fps++;
 
			if ((System.nanoTime() - referenciaContador) > NS_POR_SEGUNDO) {
				System.out.println("FPS:" + fps + "APS:" + aps);
 
				aps = 0;
				fps = 0;
				referenciaContador = System.nanoTime();
			}
 
		}
	}
 
	private void actualizar() {
		sd.obtenerTeclado().actualizar();
		ge.actualizar();
	}
 
	private void dibujar() {
		sd.dibujar(ge);
	}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
package principal.herramientas;
 
import java.awt.Graphics;
import java.awt.GraphicsConfiguration;
import java.awt.GraphicsEnvironment;
import java.awt.Image;
import java.awt.Transparency;
import java.awt.image.BufferedImage;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
 
import javax.imageio.ImageIO;
 
public class CargadorRecursos {
	public static BufferedImage cargarImagenCompatibleOpaca(final String ruta) {
		Image imagen = null;
 
		try {
			imagen = ImageIO.read(ClassLoader.class.getResource(ruta));
		} catch (IOException e) {
			e.printStackTrace();
		}
 
		GraphicsConfiguration gc = GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice().getDefaultConfiguration();
 
		BufferedImage imagenAcelerada = gc.createCompatibleImage(imagen.getWidth(null), imagen.getHeight(null), Transparency.OPAQUE);
 
		Graphics g = imagenAcelerada.getGraphics();
		g.drawImage(imagen, 0, 0, null);
		g.dispose();
 
		return imagenAcelerada;
	}
 
	public static BufferedImage cargarImagenCompatibleTranslucida(final String ruta) {
		Image imagen = null;
 
		try {
			imagen = ImageIO.read(ClassLoader.class.getResource(ruta));
		} catch (IOException e) {
			e.printStackTrace();
		}
 
		GraphicsConfiguration gc = GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice().getDefaultConfiguration();
 
		BufferedImage imagenAcelerada = gc.createCompatibleImage(imagen.getWidth(null), imagen.getHeight(null), Transparency.TRANSLUCENT);
 
		Graphics g = imagenAcelerada.getGraphics();
		g.drawImage(imagen, 0, 0, null);
		g.dispose();
 
		return imagenAcelerada;
	}
 
	public static String leerArchivoTexto(final String ruta) {
		String contenido = "";
 
		InputStream entradaBytes = ClassLoader.class.getResourceAsStream(ruta);
		BufferedReader lector = new BufferedReader(new InputStreamReader(entradaBytes));
 
		String linea;
 
		try {
			while ((linea = lector.readLine()) != null) {
				contenido += linea;
			}
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			try {
				if (entradaBytes != null) {
					entradaBytes.close();
				}
				if (lector != null) {
					lector.close();
				}
			} catch (IOException ex) {
				ex.printStackTrace();
			}
		}
 
		return contenido;
	}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
package principal.maquinaestado.estados.juego;
 
import java.awt.Color;
import java.awt.Graphics;
 
import principal.herramientas.CargadorRecursos;
import principal.maquinaestado.EstadoJuego;
 
public class GestorJuego  implements EstadoJuego{
 
	private GestorMapa gestorMapa;
 
	String texto = CargadorRecursos.leerArchivoTexto("/texto/prueba");
 
	public void actualizar() {
 
 
	}
 
 
	public void dibujar(Graphics g) {
		g.setColor(Color.white);
		g.drawString(texto, 10, 10);
 
	}
 
 
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Rodrigo
Val: 2.041
Plata
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Error "Exception in thread "main" java.lang.NullPointerException"

Publicado por Rodrigo (623 intervenciones) el 31/03/2021 02:10:44
Tipicamente los errores (las excepciones) incluyen el stack de invocacion, el que indica en que programa y en que linea ocurre la excepcion. Incluye ese stack trace para hacer mas facil descubrir el problema.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 33
Ha aumentado 1 puesto en Java (en relación al último mes)
Gráfica de Java

Error "Exception in thread "main" java.lang.NullPointerException"

Publicado por Antiwarrior (6 intervenciones) el 01/04/2021 14:30:49
Se me olvido poner esta clase
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
package principal.maquinaestado;
 
import java.awt.Graphics;
 
import principal.graficos.SuperficieDibujo;
import principal.maquinaestado.estados.juego.GestorJuego;
 
public class GestorEstados {
 
	private EstadoJuego[] estados;
	private EstadoJuego estadoActual;
 
	public GestorEstados(final SuperficieDibujo sd) {
		iniciarEstados(sd);
		iniciarEstadoActual();
	}
 
 
	private void iniciarEstados(SuperficieDibujo sd) {
	estados = new EstadoJuego[1];
	estados[0] = new GestorJuego();
	//Añadir e iniciar los demás estados a medida que los creemos
 
	}
	private void iniciarEstadoActual() {
		estadoActual = estados[0];
 
	}
 
	public void actualizar() {
		estadoActual.actualizar();
	}
	public void dibujar(final Graphics g) {
		estadoActual.dibujar(g);
	}
	public void cambiarEstadoActual(final int nuevoEstado) {
		estadoActual = estados[nuevoEstado];
	}
 
	public EstadoJuego obtenerEstadoActual() {
		return estadoActual;
	}
}
Exception in thread "main" java.lang.NullPointerException
at java.base/java.io.Reader.<init>(Reader.java:167)
at java.base/java.io.InputStreamReader.<init>(InputStreamReader.java:72)
at principal.herramientas.CargadorRecursos.leerArchivoTexto(CargadorRecursos.java:61)
at principal.maquinaestado.estados.juego.GestorJuego.<init>(GestorJuego.java:13)
at principal.maquinaestado.GestorEstados.iniciarEstados(GestorEstados.java:21)
at principal.maquinaestado.GestorEstados.<init>(GestorEstados.java:14)
at principal.GestorPrincipal.inicializar(GestorPrincipal.java:41)
at principal.GestorPrincipal.iniciarJuego(GestorPrincipal.java:34)
at principal.GestorPrincipal.main(GestorPrincipal.java:27)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Rodrigo
Val: 2.041
Plata
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Error "Exception in thread "main" java.lang.NullPointerException"

Publicado por Rodrigo (623 intervenciones) el 01/04/2021 14:55:47
No tengo certeza si lo que indico a continuacion es el problema de fondo, pero creo que al menos es parte del problema:

El path que usas para el archivo /texto/prueba parece incorrecto.
Si el archivo esta, relativo al ejecutable en texto/prueba, no incluyas el / al inicio;

Siempre deberias comprobar, antes de usar el InputStream que retorno getResourceAsStream si es que este es o no null.
No se si ese getResourceAsStream esta bien usado alli, pero la excepcion que recibes parece decirte que algo no esta bien alli, verifica el nombre del archivo al menos (eliminando el / al inicio)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 33
Ha aumentado 1 puesto en Java (en relación al último mes)
Gráfica de Java

Error "Exception in thread "main" java.lang.NullPointerException"

Publicado por Antiwarrior (6 intervenciones) el 01/04/2021 19:11:12
Probare lo que has dicho, muchas gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 33
Ha aumentado 1 puesto en Java (en relación al último mes)
Gráfica de Java

Error "Exception in thread "main" java.lang.NullPointerException"

Publicado por Antiwarrior (6 intervenciones) el 02/04/2021 04:33:39
Me da el mismo error, toda la tarde intentando arreglar y no doy. Pero bueno gracias por perder el tiempo intentando ayudarme. Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar