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

Exception nicht verständlich

0 views
Skip to first unread message

Bernhard Heuvel

unread,
Feb 7, 2002, 10:03:48 AM2/7/02
to
hallo NG,

beim Versuch ein Javaprogramm zu starten (auf der Konsole mit
java program) wirft mir der Interpreter eine Exception raus, aber
ich komme nicht dahinter, was damit gemeint ist.
(bin auch noch Anfänger)

Fehler:

java.lang.StringIndexOutOfBoundsException: String index out of range: -1
at java.lang.String.substring(String.java)
at Buch.main(Buch.java:48)


Google hat mir leider nichts verraten können, genauso wie GoToJava.
Wenn gewünscht, kann ich den Programmcode auch noch mal reinstellen.

Danke im voraus,


Bernhard Heuvel
[ba...@sur-vival.de http://www.sur-vival.de]
«He, hast Du den Hoopy Bernhard Heuvel gesasst?!
Das ist'n Frood, der weiss echt, wo sein Handtuch ist.»

Rainer Frey

unread,
Feb 7, 2002, 10:15:11 AM2/7/02
to
ba...@sur-vival.de (Bernhard Heuvel) wrote:

> hallo NG,
>
> beim Versuch ein Javaprogramm zu starten (auf der Konsole mit
> java program) wirft mir der Interpreter eine Exception raus, aber
> ich komme nicht dahinter, was damit gemeint ist.
> (bin auch noch Anfänger)

Dann geb ich dir gleich mal den Tip, dich auf http://www.dclj.de/
umzuschauen. Da gibt es jede Menge Info zu Java und dieser NG.

> Fehler:
>
> java.lang.StringIndexOutOfBoundsException: String index out of range: -1
> at java.lang.String.substring(String.java)
> at Buch.main(Buch.java:48)

In Buch.java Zeile 48 rufst du scheinbar String.substring() auf und
verwendest dabei Parameter, die ausserhalb des Strings liegen. Bsp: Der
String hat 7 Buchstaben, dann geht der Index von 0-6. Wenn du jetzt
substring(4,8) aufrufst, ist die 8 ausserhalb des Strings; dann gibt es
diese Exception.

> Google hat mir leider nichts verraten können, genauso wie GoToJava.
> Wenn gewünscht, kann ich den Programmcode auch noch mal reinstellen.

Das ist prinzipiell eine gute Idee. Dann aber nur den relevanten Teil, und
nicht Hunderte von Zeilen (Kam hier schon öfters vor).

> Danke im voraus,
> Bernhard Heuvel

HTH
Rainer

> [ba...@sur-vival.de http://www.sur-vival.de]
> «He, hast Du den Hoopy Bernhard Heuvel gesasst?!
> Das ist'n Frood, der weiss echt, wo sein Handtuch ist.»

BTW, sowas gehört in eine Signatur, mit "-- " (zwei Minus, ein Leerzeichen)
abgetrennt.

Joachim Sauer

unread,
Feb 7, 2002, 10:19:41 AM2/7/02
to
Rainer Frey <raine...@web.de> wrote:

> ba...@sur-vival.de (Bernhard Heuvel) wrote:
[snip]


>> Fehler:
>>
>> java.lang.StringIndexOutOfBoundsException: String index out of
>> range: -1
>> at java.lang.String.substring(String.java)
>> at Buch.main(Buch.java:48)
>
> In Buch.java Zeile 48 rufst du scheinbar String.substring() auf und
> verwendest dabei Parameter, die ausserhalb des Strings liegen. Bsp:
> Der String hat 7 Buchstaben, dann geht der Index von 0-6. Wenn du
> jetzt substring(4,8) aufrufst, ist die 8 ausserhalb des Strings; dann
> gibt es diese Exception.

Und der Index -1 deuted darauf hin, dass du als Parameter für substring
anscheinend eine Variable übergeben hast, die du vorher mittels indexOf
ermittelt hast (leider wurde der gesuchte Substring nicht gefunden). Du
solltest also den Rückgabewert von indexOf überprüfen.

Grundsätzlich empfiehlt es sich bei Zweifeln die API-Doc zu rate zu
ziehen. In diesem Fall zur Methode substring() von String und zur
Exception java.lang.StringIndexOutOfBoundsException.

mfg
Joachim Sauer

--
Anyone who gets in between me and my morning coffee should be insecure.
[sic]
- RFC 2324

Andreas Billmann

unread,
Feb 7, 2002, 10:24:38 AM2/7/02
to
Bernhard Heuvel wrote:

> hallo NG,
>
> beim Versuch ein Javaprogramm zu starten (auf der Konsole mit
> java program) wirft mir der Interpreter eine Exception raus, aber
> ich komme nicht dahinter, was damit gemeint ist.
> (bin auch noch Anfänger)
>
> Fehler:
>
> java.lang.StringIndexOutOfBoundsException: String index out of range: -1
> at java.lang.String.substring(String.java)
> at Buch.main(Buch.java:48)

Also das bedeutet dass du beim "zerschnippeln" deines Strings eine
ungültige Positionsangabe benutzt.

Bsp. du möchtest den String "Hallo" in "all" zerlegen.
0 H 1 a 2 l 3 l 4 o 5
So, jetzt gibst du einfach die Nummer an ab der neue Teilstring beginnen
soll und eventuell, wenn du nicht bis zum Ende den String haben möchtest,
wo er endet.

Als Code sieht das ganze so aus:

String halloString = "Hallo";
String allString = halloString.substring( 1, 4 );

Solltest du jetzt aber auf die Idee kommen eine Position < 0 oder > 5
anzugeben bekommst die die StringIndexOutOfBoundsException.

In der Java Api steht bei String#substring

---
- IndexOutOfBoundsException - if the beginIndex is negative, or endIndex is
- larger than the length of this String object, or beginIndex is larger
- than endIndex.
---

> Danke im voraus,
HTH

Gruss,
Andi
--
http://www.billmann.de

michael paap

unread,
Feb 7, 2002, 10:24:07 AM2/7/02
to
Bernhard Heuvel wrote:

> Fehler:
>
> java.lang.StringIndexOutOfBoundsException: String index out of range: -1
> at java.lang.String.substring(String.java)
> at Buch.main(Buch.java:48)
>
> Google hat mir leider nichts verraten können, genauso wie GoToJava.
> Wenn gewünscht, kann ich den Programmcode auch noch mal reinstellen.


Bitte nicht *DEN* Programmcode. Investier vorher ein wenig Arbeit...
schau Dir die Zeile 48 in der Main-Methode von Buch an. Was wird da
getan? Sieh Dir den Rest der Fehlermeldung an (so existent). Wo gehen
die Aufrufe entlang? wo wird letzlich die Methode Substring aufgerufen,
und zwar mit einer Stringposition, die es im String nicht gibt, weil der
z.B. kürzer ist, als Du meinst (z.B. weil mit 0 angefangen wird zu
zählen...)?

Wenn Du dann noch nicht selbst drauf kommst, poste die relevanten
Zeilen, d.h. das, auf das Du das Problem eindampfen konntest, so dass es
noch reproduzierbar bleibt.

Diesen Code poste bitte in einem Style, der zumindest ungefähr den
Sun-Conventions entspricht
(http://java.sun.com/docs/codeconv/html/CodeConvTOC.doc.html). Wenn Dein
Code aussieht wie von einem Schimpansen geschriebenes Perl, wird manch
einer keine Lust haben, sich das näher anzusehen.

Wenn Du hingegen eine vollständige Fehlermeldung mit den relevanten
Zeilen in lesbarer Form ablieferst, garantiere ich Dir eine Antwort
innerhalb 10 Minuten.
BTW: Du hast sicher gemerkt, dass die Antwort eigentlich schon im ersten
Absatz dieses Postings enthalten ist? ;-)

Gruß,
Michael

Lars Amsel

unread,
Feb 7, 2002, 11:01:44 AM2/7/02
to
michael paap schrieb:

> Wenn Du hingegen eine vollständige Fehlermeldung mit den relevanten
> Zeilen in lesbarer Form ablieferst, garantiere ich Dir eine Antwort
> innerhalb 10 Minuten.

Auf das Angebot würde ich bei Gelegenheit gern zurückkommen. Gilt das 24*7? Ich
hätte allerdings gern eine Lösung und nicht nur eine Antwort ;-)

Gruß

Lars

michael paap

unread,
Feb 7, 2002, 11:19:14 AM2/7/02
to

Das war weniger ein Angebot, als vielmehr eine Beschreibung der in
dieser Group herrschenden Zustände. Und diese gilt natürlich auch nicht
für *beliebige* Fragen, sondern für solche auf Newbieniveau.
Wenn Du also bei Gelegenheit gerne fragen möchtest, warum [hier
beliebiegen newbietypischen Code einsetzen] nicht das erwartete Ergebnis
liefert, sondern eine [passende Exception einsetzen] auslöst, dann nur
zu. :-)

Gruß,
Michael

Lars Amsel

unread,
Feb 7, 2002, 11:33:50 AM2/7/02
to
michael paap schrieb:

OK. Ich möchte gern eine exe aus meinem Javaprogramm haben. Ich bin seit ein
paar Wochen auf Linux umgestiegen. Erstmal habe ich aus meiner Java-Datei eine
exe gemacht

mv Test.class Test.exe

Die ließ sich aber nicht doppelklicken :-(

Dann habe ich in meinem schlauen Linuxbuch gelesen, daß Linux ausführbare
Dateien nicht an der Dateiendung sondern an Ausführbarkeitsflag erkennt. Achso,
warum sagen die das nicht gleich:

chmod u=+x Test.exe

Wenn ich das Programm jetzt starte kommt:

bash: ./Test.exe: cannot execute binary file

Was mache ich flasch?

Gruß

Lars, Zeit läuft 9:59...


>
> Gruß,
> Michael
>

Michael Schmidt

unread,
Feb 7, 2002, 11:32:26 AM2/7/02
to
Lars Amsel wrote:


>>
>
> OK. Ich möchte gern eine exe aus meinem Javaprogramm haben. Ich bin seit ein
> paar Wochen auf Linux umgestiegen. Erstmal habe ich aus meiner Java-Datei eine
> exe gemacht
>
> mv Test.class Test.exe
>
> Die ließ sich aber nicht doppelklicken :-(
>
> Dann habe ich in meinem schlauen Linuxbuch gelesen, daß Linux ausführbare
> Dateien nicht an der Dateiendung sondern an Ausführbarkeitsflag erkennt. Achso,
> warum sagen die das nicht gleich:
>
> chmod u=+x Test.exe
>
> Wenn ich das Programm jetzt starte kommt:
>
> bash: ./Test.exe: cannot execute binary file
>
> Was mache ich flasch?
>
> Gruß
>
> Lars, Zeit läuft 9:59...


Such mal im Archiv dieser NG. Ich kann dir jetzt keine msg-Id geben,
aber die Frage kam glaube ich von Barbara Schmelz. Benutze mal Google.

*gg* Micha

--
Homepage & FAQ von de.comp.lang.java: http://www.dclj.de

Ingo R. Homann

unread,
Feb 7, 2002, 11:39:51 AM2/7/02
to
Lars Amsel wrote:
>
> >> michael paap schrieb:
> >>
> >> > Wenn Du hingegen eine vollständige Fehlermeldung mit den relevanten
> >> > Zeilen in lesbarer Form ablieferst, garantiere ich Dir eine Antwort
> >> > innerhalb 10 Minuten.
> >>
> >> Auf das Angebot würde ich bei Gelegenheit gern zurückkommen. Gilt das 24*7?
> >> Ich hätte allerdings gern eine Lösung und nicht nur eine Antwort ;-)
> >
> > Das war weniger ein Angebot, als vielmehr eine Beschreibung der in
> > dieser Group herrschenden Zustände. Und diese gilt natürlich auch nicht
> > für *beliebige* Fragen, sondern für solche auf Newbieniveau.
> ...

> OK. Ich möchte gern eine exe aus meinem Javaprogramm haben. Ich bin seit ein
> paar Wochen auf Linux umgestiegen. Erstmal habe ich aus meiner Java-Datei eine
> exe gemacht
>
> mv Test.class Test.exe
>
> Die ließ sich aber nicht doppelklicken :-(
>
> Dann habe ich in meinem schlauen Linuxbuch gelesen, daß Linux ausführbare
> Dateien nicht an der Dateiendung sondern an Ausführbarkeitsflag erkennt. Achso,
> warum sagen die das nicht gleich:
>
> chmod u=+x Test.exe
>
> Wenn ich das Programm jetzt starte kommt:
>
> bash: ./Test.exe: cannot execute binary file
>
> Was mache ich flasch?
>
> Gruß
>
> Lars, Zeit läuft 9:59...

ROTFL!

Ingo

Christian Kaufhold

unread,
Feb 7, 2002, 12:12:07 PM2/7/02
to
Hello!

Lars Amsel <la...@merula.de> wrote:

[...]

> OK. Ich möchte gern eine exe aus meinem Javaprogramm haben. Ich bin seit ein
> paar Wochen auf Linux umgestiegen. Erstmal habe ich aus meiner Java-Datei eine
> exe gemacht

> mv Test.class Test.exe

> Die ließ sich aber nicht doppelklicken :-(

> Dann habe ich in meinem schlauen Linuxbuch gelesen, daß Linux ausführbare
> Dateien nicht an der Dateiendung sondern an Ausführbarkeitsflag erkennt. Achso,
> warum sagen die das nicht gleich:

> chmod u=+x Test.exe

> Wenn ich das Programm jetzt starte kommt:

> bash: ./Test.exe: cannot execute binary file

> Was mache ich flasch?

binfmt_misc nicht aktiv oder nicht konfiguriert.


Christian

Aljoscha Rittner

unread,
Feb 7, 2002, 12:09:58 PM2/7/02
to
Lars Amsel schrieb:

[...]


> OK. Ich möchte gern eine exe aus meinem Javaprogramm haben. Ich bin seit ein
> paar Wochen auf Linux umgestiegen. Erstmal habe ich aus meiner Java-Datei eine
> exe gemacht
>
> mv Test.class Test.exe

[...]

Das du Test.class in .exe umbenannt hast (statt Test.java) bedeutet
schonmal, dass du nicht absoluter Newbie bist.

Gruß,
Jo"SCNR"sch.
--
f u cn rd ths, u cn gt a gd jb n cmptr prgrmmng.

michael paap

unread,
Feb 7, 2002, 3:28:04 PM2/7/02
to
Michael Schmidt wrote:

> Lars Amsel wrote:

[...]

> > Lars, Zeit läuft 9:59...
>
> Such mal im Archiv dieser NG. Ich kann dir jetzt keine msg-Id geben,
> aber die Frage kam glaube ich von Barbara Schmelz. Benutze mal Google.


Siehst Du, Lars. Die erste konstruktive Antwort kam sogar 1 Minute *vor*
Deiner Frage. Toll, was?

Gruß,
Michael

Rainer Frey

unread,
Feb 8, 2002, 2:56:52 AM2/8/02
to
Joachim Sauer <sa...@gmx.net> wrote:

> Rainer Frey <raine...@web.de> wrote:
>
>> ba...@sur-vival.de (Bernhard Heuvel) wrote:
> [snip]
>>> Fehler:
>>>
>>> java.lang.StringIndexOutOfBoundsException: String index out of
>>> range: -1
>>> at java.lang.String.substring(String.java) at
>>> Buch.main(Buch.java:48)
>>
>> In Buch.java Zeile 48 rufst du scheinbar String.substring() auf und
>> verwendest dabei Parameter, die ausserhalb des Strings liegen. Bsp:
>> Der String hat 7 Buchstaben, dann geht der Index von 0-6. Wenn du
>> jetzt substring(4,8) aufrufst, ist die 8 ausserhalb des Strings; dann
>> gibt es diese Exception.
>
> Und der Index -1 deuted darauf hin,

Und ich brauch ne neue Brille. Ich wusste doch, dass der falsche Index in
der Fehlermeldung sein muss. Aber ich hab es nicht gefunden.

[...]
>
> mfg
> Joachim Sauer

Rainer

Rainer Frey

unread,
Feb 8, 2002, 3:03:01 AM2/8/02
to
Michael Schmidt <spam...@michaschmidt.de> wrote:

[...]

> Such mal im Archiv dieser NG. Ich kann dir jetzt keine msg-Id geben,
> aber die Frage kam glaube ich von Barbara Schmelz. Benutze mal Google.

Message-ID: <9p7bm5$fpj$06$1...@news.t-online.com> und folgender Thread. Fast
so schön wie Susi ;-)

> *gg* Micha

rAINER

Lars Amsel

unread,
Feb 8, 2002, 3:07:02 AM2/8/02
to
michael paap schrieb:

>> Such mal im Archiv dieser NG. Ich kann dir jetzt keine msg-Id geben,
>> aber die Frage kam glaube ich von Barbara Schmelz. Benutze mal Google.
>
> Siehst Du, Lars. Die erste konstruktive Antwort kam sogar 1 Minute *vor*
> Deiner Frage. Toll, was?

Ich bin begeistert. Damit wäre dann auch der Verbleib der dclj-eigenen
Kristallkugel geklärt. Sozialistisch umlagern hieß das mal ;-)

Gruß

Lars

0 new messages