# ClassCastException



## flashfactor (9. Jan 2006)

Servus,

Ich bekomme immer diese Fehlermeldung.

```
type Exception report

message 

description The server encountered an internal error () that prevented it from fulfilling this request.

exception 

java.lang.ClassCastException
	at.kages.redirect.servlet.SendRequest.doPost(SendRequest.java:125)
	at.kages.redirect.servlet.SendRequest.doGet(SendRequest.java:49)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:743)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
	sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	java.lang.reflect.Method.invoke(Method.java:324)
	org.apache.catalina.security.SecurityUtil$1.run(SecurityUtil.java:243)
	java.security.AccessController.doPrivileged(Native Method)
	javax.security.auth.Subject.doAsPrivileged(Subject.java:500)
	org.apache.catalina.security.SecurityUtil.execute(SecurityUtil.java:275)
	org.apache.catalina.security.SecurityUtil.doAsPrivilege(SecurityUtil.java:161)


note The full stack trace of the root cause is available in the Apache Tomcat/5.5.9 logs.
```

Hier der betreffente Quellcode aus der SendRequest.java. Zeile 1 ist im Code die Zeile 125.

```
if( count < Integer.valueOf((String)((Hashtable)((Vector)this.vServerCount.get(a)).get(2)).get("data")).intValue() ){
	iPos = i;
	count = Integer.valueOf((String)((Hashtable)((Vector)this.vServerCount.get(a)).get(2)).get("data")).intValue();
}
```

Ich habe schon genau nachgeschaut was in der Hashtable steht (data=1) als String.
Nur wenn Ich Integer.valueOf("1") mache kommt die ClassCastException.

Verwendet wird JOnAs mit Tomcat 5.5.x
JDK 1.4.3_3

Gruß, ich hoffe es ist genug Info zum Problem.


----------



## flashfactor (9. Jan 2006)

Danke sehr,
habe bereits die Anwort gefunden.


```
String.valueOf( (Hashtable)((Vector)this.vServerCount.get(a)).get(2)).get("data") );
```

Damit geht es.


----------



## meez (10. Jan 2006)

Ich geb dir folgenden Rat:

Schreib keine solchen Einzeiler, da sie so gut wie nicht lesbar sind für Dritte (z.B. in einem grossen Projekt) und dein Code somit schlicht als "unbrauchbar" zu deklarieren ist.
Zudem kannst du genau solche Exceptions so von Anfang an vermeiden...


----------



## Bleiglanz (10. Jan 2006)

ja, seh ich auch so

```
count = Integer.valueOf((String)((Hashtable)((Vector)this.vServerCount.get(a)).get(2)).get("data")).intValue();
```
ist Schrott, selbst wenns funktionieren würde



> It’s often unclear [...]
> 
> When the statement has executed you often don’t have reference variables [....]
> 
> Plus it's harder to debug when single stepping through the code, because each statement does many separate tasks, and return values are not stored in inspectable intermediate variables.


----------

