Integer.valueOf(String) nicht Standard

kroesi

Erfahrenes Mitglied
Hallo !

Auf meinem Rechner hab ich Eclipse 3.1 mit Java 1.5.03 installiert. Eclipse habe ich allerdings auf 1.4 Kompatibiltät eingestellt.

Nun bekam ich von Kunden mitgeteilt, daß ein Programm bei ihnen nicht läuft.

Es lag an der (eigentlich eh nicht notwendigen ...) Methode valueOf(String) der Klasse Integer. Die JRE auf den Kunden-Rechnern kennt diese Methode schlichtweg nicht. Allerdings läuft dort angeblich Java 1.4. Die Methode ist schon in niedrigeren Java-Versionen in der Dokumentation verzeichnet. Ich weiss allerdings nicht welche OS bzw. welche JRE ( IBM, SUN, BORLAND etc.) die Kunden benutzen.

Das Problem ist gelöst, wenn man diese Methode einfach nicht verwendet, ich brauche also nicht dringend Hilfe ;) , mich würde jedoch interessieren, ob jemand das hier betsätigen kann.

Schöne WE,

Krösi
 
Das Problem ist die völlig unnötige Überlagerung, die sich SUN hätte sparen können:

Code:
String s1 = "http://rmbc.webnobis.com";
String s2 = String.valueOf(s1);

Was wird aufgerufen - valueOf(String s) oder valueOf(Object o)?
Du kompilierst mit der 1.5, also der String-valueOf-Methode. Dein Kunde besitzt die 1.4, kennt also diese String-valueOf-Methode noch nicht. Aus diesem Grund "knallt's".

Ich hatte ebenfalls schon mal so ein Problem:
http://www.tutorials.de/forum/java/...ion-zu-stringbuffer-je-nach-java-version.html
 
Hallole,
also das ist ja drollig, ich hatte wenn ich Krösi richt gefolgt bin, gedacht, dass auf 1.4 Kompatibilität geachtet wurde, ich meine in diesem Falle die Eclipse IDE.
Gilt diese Option lediglich gegenüber den Schlüsselwörtern, muss man demnach um ganz sicher zu gehen eine JRE 1.4... im Eclipse vorgeben um solchen Problemen vorzubeugen?

mit besorgten Grüßen
Takidoso
 
Das ist sicher keine schlechte Idee,
aber wie sieht es denn mit Anwenungen aus, die automatisch verteilt werden sollen, also in einem Netzwerk angeboten werden via Applet oder Web-Start?
Ich selbst neige dazu in solchen Fällen notfalls einen Link zum Runterladen mit auf der Seite anzubieten.

Takidoso
 
...ich frag' mich auch schon lange, wo der Sinn, dieser Art Methoden steckt:

Code:
//...
public void set(Object o) {
//...
}
public set(String s) {
//...
}
//...

Mit "set(Object)" ist bereits für alle Objekte die passende Methode vorhanden - oder habe ich was übersehen?

Noch schlimmer wird's, wenn man "null" übergeben will:

Code:
//...
set((String)null); //explizieter Cast erforderlich
//...

Vielleicht sollte SUN solche überflüssigen Überlagerungen aus Kompatibilitätsgründen in Zukunft weglassen.
 
Zurück