NullPointerException

0

Napisałem prosty aplet. Uruchamiając go czasami wyskakuje na konsoli komunikat o wyjątku NullPointerException. Uruchmiam zawsze ten sam program a wyjątek raz się pojawia a raz nie. Wyjątej jak się pojawia to po zamknięciu okna Applet Viewer. Jak należy rozumieć tę nieregularność w występowaniu wyjątku? Proszę o podpowiedzi. Z góry dziękuję

0
  1. Podaj adres gdzie to masz umieszczone. popatrzymy
  2. NullPointer oznacza iż któraś ze zmiennych nie ma wartości.
  3. zamieść to co leci na konsoli. Stacktrace - opis błedu
0

W sieci jeszcze tego nie umieśćiłem. Kod wygląda następująco

package mypak;

import java.awt.*;
import java.applet.*;

public class Lissajous extends Applet {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	final static int APPWIDTH = 300, // applet dimensions
					 APPHEIGHT = 200;

	Color bgColor = new Color(200, 240, 100); // background colour

	public void init() {
		setBackground(bgColor);

	}

	public void paint(Graphics screen) {
		Graphics2D g = (Graphics2D) screen;

		g.setColor(Color.black);
		g.drawRect(0, 0, APPWIDTH, APPHEIGHT); // ractangle
		g.drawLine(APPWIDTH / 2, 0, APPWIDTH / 2, APPHEIGHT); // horizontal
																// line
		g.drawLine(0, APPHEIGHT / 2, APPWIDTH, APPHEIGHT / 2); // vertical line

		BasicStroke pen = new BasicStroke(4.0f, BasicStroke.CAP_BUTT,
				BasicStroke.JOIN_ROUND);
		for (int x = APPWIDTH / 2; x < APPWIDTH + 500; x++) {
			// g.drawLine(x, f(x), x+1, f(x+1));

			g.setStroke(pen);
			g.drawLine(f(x, 0.01, 1.5) + APPWIDTH / 8, f(x, 0.03, 0.0), f(
					x + 1, 0.01, 1.5)
					+ APPWIDTH / 8, f(x + 1, 0.03, 0.0));
		}

	}

	int f(int wspX, double omega, double faza) {
		double x = (double) wspX;
		return (int) (APPHEIGHT / 2 * (-Math.sin(omega * x + faza)))
				+ APPHEIGHT / 2;
	}
}

Natomiast błąd

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException: component argument pData
	at sun.awt.windows.Win32SurfaceData.initOps(Native Method)
	at sun.awt.windows.Win32SurfaceData.<init>(Unknown Source)
	at sun.awt.windows.Win32SurfaceData.createData(Unknown Source)
	at sun.awt.Win32GraphicsConfig.createSurfaceData(Unknown Source)
	at sun.awt.windows.WComponentPeer.replaceSurfaceData(Unknown Source)
	at sun.awt.windows.WComponentPeer.replaceSurfaceData(Unknown Source)
	at sun.awt.windows.WComponentPeer$2.run(Unknown Source)
	at java.awt.event.InvocationEvent.dispatch(Unknown Source)
	at java.awt.EventQueue.dispatchEvent(Unknown Source)
	at java.awt.EventDispatchThread.pumpOneEventForHierarchy(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.run(Unknown Source)

0

Jak często ci błąd wyrzuca bo u mnie jest ok.

0

Nie często raz za czas. OK 2 na 10 uruchomień. Korzystam z eclipse.

0

Hym mialem podobne problemy w Netbeansie umnie chodzilo o to ze program byl jeszcze uruchomiony:| i recznie go musialem wylaczac

pozdr.

0

Dziwne u mnie nie ma żadnych problemów? Może masz coś nie tak z wersją jre.

0

Co w takim przypadku się robi? Należy zignorować problem czy obsługiwać w jakiś sposób ten wyjątek?

0

Nic się nie robi. Podobnie błąd nie powinien pojawić się na maszynach z jednym procesorem. Niestety pojawił się też w 1.6 Mustang i chyba szybko nie zniknie...

0

Dzięki za wyjaśnienia.

1 użytkowników online, w tym zalogowanych: 0, gości: 1