Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

NullPointerException - ich werd noch wahnsinnig

0 views
Skip to first unread message

Benjamin Hössl

unread,
May 2, 2002, 3:32:20 AM5/2/02
to
Hi NG,
wenn ich meine Methode putImage aufrufe, die sich in einer Subclass
befindet, bekomme ich eine NullPointerException. Die Subclass lässt sich
aber problemlos compilieren. Das Problem hängt an diesem Befehl:
this.Picture[this.arraypoint]=getImage(getCodeBase(),this.name);. Hier der
Quellcode für meine Methode:

---snip---
public void putImage (String Name, int Arraypoint)
{
this.arraypoint=Arraypoint;
this.name=Name;
if (this.arraypoint>this.nImageStim)
{
System.out.println("Class ImageStim Error. The point to place Image was
not defined. Action was interrupted.");
this.error=true;
}

if (this.error==false)
{

this.Picture[this.arraypoint]=getImage(getCodeBase(),this.name);

System.out.println(name+"' wurde im Array mit der max. Kapazität von
"+this.nImageStim+" in der "+Anzahl+". Instanz der Klasse ImageStim an der
Stelle: '"+this.arraypoint+"' abgelegt.");
}
this.error=false;
}
---snap---

Ich habe soweit alles debugged, das Array wird geschaffen und alles, nur er
puttet das verdammte Bild nicht, selbst wenn ich "this.name" durch den
Dateinamen ersetze. Er bringt folgende Fehlermeldung:

C:\jdk1.2.2\bin\appletviewer.exe Experiment.html
Working Directory - c:\Documents and Settings\Benjamin\My
Documents\Code\Java\Internet-Experiment\v0.1\
Class Path -
.;c:\Kawapro5.0\kawaclasses.zip;c:\jdk1.2.2\lib\tools.jar;c:\jdk1.2.2\jre\li
b\rt.jar;c:\jdk1.2.2\jre\lib\i18n.jar
java.lang.NullPointerException: at
java.applet.Applet.getCodeBase(Applet.java:94) at
ImageStim.putImage(ImageStim.java:36) at Experiment.init(Experiment.java:12)
at sun.applet.AppletPanel.run(AppletPanel.java:343) at
java.lang.Thread.run(Thread.java:472) Process Exit...

Ich weiß echt nicht, woran es liegen könnte. Die Referenz in der
Hauptklasse, auf die er verweist ist der aufruf der Methode, zu der ich hier
opensourcemässig ;-) den Quelltext gepostet habe.

Danke für Eure Hilfe (hoffentlich)...

cya
Benjamin

Aljoscha Rittner

unread,
May 2, 2002, 3:47:27 AM5/2/02
to
Benjamin Hössl schrieb:

> Hi NG,
> wenn ich meine Methode putImage aufrufe, die sich in einer Subclass
> befindet, bekomme ich eine NullPointerException. Die Subclass lässt sich
> aber problemlos compilieren. Das Problem hängt an diesem Befehl:
> this.Picture[this.arraypoint]=getImage(getCodeBase(),this.name);. Hier der
> Quellcode für meine Methode:
>
> ---snip---
> public void putImage (String Name, int Arraypoint)

In Java schreibt man Variablen im ersten Buchstaben klein.

[...]
>
> this.Picture[this.arraypoint]=getImage(getCodeBase(),this.name);
>
[...]

> Ich habe soweit alles debugged, das Array wird geschaffen und alles, nur er
> puttet das verdammte Bild nicht, selbst wenn ich "this.name" durch den
> Dateinamen ersetze. Er bringt folgende Fehlermeldung:
>
> C:\jdk1.2.2\bin\appletviewer.exe Experiment.html
> Working Directory - c:\Documents and Settings\Benjamin\My
> Documents\Code\Java\Internet-Experiment\v0.1\
> Class Path -
> .;c:\Kawapro5.0\kawaclasses.zip;c:\jdk1.2.2\lib\tools.jar;c:\jdk1.2.2\jre\li
> b\rt.jar;c:\jdk1.2.2\jre\lib\i18n.jar
> java.lang.NullPointerException: at
> java.applet.Applet.getCodeBase(Applet.java:94) at
> ImageStim.putImage(ImageStim.java:36) at Experiment.init(Experiment.java:12)
> at sun.applet.AppletPanel.run(AppletPanel.java:343) at
> java.lang.Thread.run(Thread.java:472) Process Exit...

getCodeBase() liefert was?

Mach doch mal ein "System.out.println (getCodeBase());"

> Ich weiß echt nicht, woran es liegen könnte.

Dabei steht es doch in der Fehlermeldung, oder?

Wie wäre es eigentlich mit Class#getResource?

getImage (this.getClass().getResource (this.name));

Gruß,
Josch.
--
Einige Tags in de.comp.lang.java ( siehe http://www.dclj.de/dcljstart.html )
[LANG] - Frage bezüglich der Sprache Java, beispielsweise Vererbung
[IO] - Frage bezüglich Eingabe/Ausgabe in Java
[SWING] - Frage bezüglich Swing

Christine Ferdinand

unread,
May 2, 2002, 3:56:51 AM5/2/02
to

"Benjamin Hössl" <crbs...@gmx.net> schrieb im Newsbeitrag
news:aaqq2p$d14u5$1...@ID-4498.news.dfncis.de...

> Hi NG,
> wenn ich meine Methode putImage aufrufe, die sich in einer Subclass
> befindet, bekomme ich eine NullPointerException. Die Subclass lässt sich
> aber problemlos compilieren. Das Problem hängt an diesem Befehl:
> this.Picture[this.arraypoint]=getImage(getCodeBase(),this.name);.

Ich denke Du brauchst einen Mediatracker der auf die Bilder wartet.
getImage() returns immediatly, ob das Bild vorhanden ist oder nicht spielt
keine Rolle, ob es fertig geladen ist erst recht nicht. Der Mediatracker
wartet bis alles geladen ist und verhindert damit den NullPointer.

MediaTracker tracker = new MediaTracker(this);

for(int i=0; i<bildPfade.length;i++){
tracker.addImage(bildPfade[i].getImage(),i);
}


Benjamin Hössl

unread,
May 2, 2002, 11:30:17 AM5/2/02
to
Hi Christine,

> MediaTracker tracker = new MediaTracker(this);
>
> for(int i=0; i<bildPfade.length;i++){
> tracker.addImage(bildPfade[i].getImage(),i);
> }

Danke für Deinen Vorschlag, es gibt da aber ein kleines Problem. Was ist
mit bildPfade gemeint? getImage() ist doch eine applet Methode. Von welchem
Typ ist bildPfade und wo genau wandert meint Bild hin und wie krieg ich es
da wieder heraus ;-)?

MfG
Benjamin


Benjamin Hössl

unread,
May 2, 2002, 11:31:42 AM5/2/02
to
Hi Josch,
danke für Deine erklärenden Worte. Ich habe Deinen Vorschlag ausprobiert,
leider ohne Erfolg. Ich bekomme weiterhin die NullPointerException.

MfG
Benjamin


Aljoscha Rittner

unread,
May 2, 2002, 12:05:42 PM5/2/02
to
Benjamin Hössl schrieb:

> Hi Josch,
> danke für Deine erklärenden Worte. Ich habe Deinen Vorschlag ausprobiert,
> leider ohne Erfolg. Ich bekomme weiterhin die NullPointerException.

Tja, so kann dir sicherlich niemand helfen. Was kommt bei getCodeBase
raus? Und bist du dir sicher, dass Name wirklich eine Zeichenkette
enthält?

Gruß,
Josch.
--
Einige Tags in de.comp.lang.java ( siehe http://www.dclj.de/dcljstart.html )

[TOOLS] - Frage zu einem Java-Tool (IDEs, java.exe, native Compiler)
[VM] - Frage zu virtuelle Maschinen, alles über JREs und Interna (gc())
[MISC] - Alles, was nicht in eine der anderen Rubriken paßt

Benjamin Hössl

unread,
May 2, 2002, 1:41:02 PM5/2/02
to
Hi Aljoscha,

kann es vielleicht sein, daß das Problem etwas damit zu tun hat, daß ich
class ImageStim als subclass von Experiment definieren, das wiederum eine
subclass von Applet ist? Ich habe das nämlich gemacht, damit ich
getImage(getCodeBase(),String) benutzen kann, weil ich mit Browsern Security
Schwierigkeiten hatte, als ich Toolkit.getDefaultToolkit().getImage(String)
benutzt habe, das Applet also nicht lief. Nun konnte ich ImageStim nicht
selbst von Applet ableiten, da ja nur eine classe in einem Projekt als
mainclass bzw. Appletclass definiert sein kann (soweit in einem Thread
weiter unten).
Solange ich nämlich ImageStim nicht von Experiment abgeleitet hatte und
Toolkit.getDefaultToolkit().getImage(String) benutzt habe lief alles wie am
Schnürchen. Ich weiß trotzdem nicht, warum es so nicht funktioniet,
schließlich greife ich mit der übergeordneten Klasse auf die Subclass zu und
nicht umgekehrt, oder habe ich was übersehen?

cya
Benjamin


Paul Ebermann

unread,
May 2, 2002, 2:07:25 PM5/2/02
to
"Benjamin Hössl" skribis:

> kann es vielleicht sein, daß das Problem etwas damit zu tun hat, daß ich
> class ImageStim als subclass von Experiment definieren, das wiederum eine
> subclass von Applet ist?

Ja.
Nur ein Exemplar deiner Haupt-Applet-Klasse (die im
Applet-Tag genannt ist) wird vom "Browser" mit einem
AppletContext versorgt, der das Laden von Bildern
ermöglicht.

Du müsstest also deiner Klasse die Daten mitgeben.

[...]


> Solange ich nämlich ImageStim nicht von Experiment abgeleitet hatte und
> Toolkit.getDefaultToolkit().getImage(String) benutzt habe lief alles wie am
> Schnürchen. Ich weiß trotzdem nicht, warum es so nicht funktioniet,
> schließlich greife ich mit der übergeordneten Klasse auf die Subclass zu und
> nicht umgekehrt, oder habe ich was übersehen?

Ja. Außerdem hast du Vererbung falsch verstanden ...

Paul

Benjamin Hössl

unread,
May 2, 2002, 2:49:30 PM5/2/02
to
Hi Paul,

"Paul Ebermann" <Paul-E...@gmx.de> wrote in message
news:aarvt8$da7if$2...@ID-77081.news.dfncis.de...

> Ja. Außerdem hast du Vererbung falsch verstanden ...

ich weiß nicht woran es liegt, aber ich hasse Tage, an denen man dümmer ins
Bett geht, als man aufgestanden ist ;-) Jede Antwort wirft eben mindestens
zwei neue Fragen auf, jaja. Ich muß ins Bett, ich verlier hier langsam den
Durchblick.

Gute Nacht,
Benjamin


Christine Ferdinand

unread,
May 2, 2002, 4:00:12 PM5/2/02
to

das soll nur ein Beispiel sein wie man den Mediatracker benutzt..
bildpfade sind in meinem Applet ImageIcons.
Das Bild wandert nirgendwo hin, man muss es auch nicht "wiederholen", Du
sagts nur dem tracker Bescheid, dass das Bild zu beachten ist.
Also: einen Tracker erzeugen und dem die ganzen Bilder geben (bevor Du
darauf zugreifst!), danach mit den Bildern machen was Du ursprünglich
vorhattest.

Gruß,
Christine

Christine Ferdinand

unread,
May 2, 2002, 4:03:21 PM5/2/02
to

> > Ja. Außerdem hast du Vererbung falsch verstanden ...
>
> ich weiß nicht woran es liegt, aber ich hasse Tage, an denen man dümmer
ins
> Bett geht, als man aufgestanden ist ;-) Jede Antwort wirft eben mindestens
> zwei neue Fragen auf, jaja. Ich muß ins Bett, ich verlier hier langsam den
> Durchblick.
>

Wenn Du so früh schon ins Bett musst...hast Du Java falsch verstanden ;-)


0 new messages