java.lang.IllegalStateException: Can't happen - classname is null, who added
this ?
at
org.apache.tomcat.core.ServletWrapper.loadServlet(ServletWrapper.java:261)
at org.apache.tomcat.core.ServletWrapper.init(ServletWrapper.java:289)
at org.apache.tomcat.core.Handler.service(Handler.java:254)
at org.apache.tomcat.core.ServletWrapper.service(ServletWrapper.java:372)
at
org.apache.tomcat.core.ContextManager.handleStatus(ContextManager.java:1058)
at
org.apache.tomcat.core.ContextManager.internalService(ContextManager.java:77
5)
at org.apache.tomcat.core.ContextManager.service(ContextManager.java:743)
at
org.apache.tomcat.service.http.HttpConnectionHandler.processConnection(HttpC
onnectionHandler.java:213)
at
org.apache.tomcat.service.TcpWorkerThread.runIt(PoolTcpEndpoint.java:416)
at
org.apache.tomcat.util.ThreadPool$ControlRunnable.run(ThreadPool.java:501)
at java.lang.Thread.run(Thread.java)
(man beachte die erste Zeile)
Tomcat 4.01 liefert folgendes:
java.lang.NullPointerException
at Shop.doGet(Shop.java:32)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:740)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Application
FilterChain.java:247)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterCh
ain.java:193)
at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.ja
va:243)
at
org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:5
66)
at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.ja
va:201)
at
org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:5
66)
at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
at
org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2344)
at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164
)
at
org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:5
66)
at
org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.
java:170)
at
org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:5
64)
at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:170
)
at
org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:5
64)
at
org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:462)
at
org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:5
64)
at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java
:163)
at
org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:5
66)
at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
at
org.apache.catalina.connector.http.HttpProcessor.process(HttpProcessor.java:
1011)
at
org.apache.catalina.connector.http.HttpProcessor.run(HttpProcessor.java:1106
)
at java.lang.Thread.run(Unknown Source)
das eigentlich Eigenartige ist nun jedoch, dass das servlet nur manchmal
bei nur dezenten Codeveraenderungen mal funktioniert mal nicht. (Inhalt
eines println() aendern)
Momentan gerade mal wieder nicht, deshalb schreibe ich ja.
Compilieren laesst es sich sowieso immer problemlos.
ich hoffe ich bin nicht allzu OT
Christian
der Quelltext des Servlets ist hier:
http://www.mycgiserver.com/~nonfreezing/Shop2.java
> Christian
>
> der Quelltext des Servlets ist hier:
> http://www.mycgiserver.com/~nonfreezing/Shop2.java
danke, hab aber keine zeit zum debuggen.
HTH gerhard
> hab hier ein Problem mit einem recht einfach gestrickten servlet, ich
> erhalte folgende Meldung vom Tomcat (3.2) zurueck:
Gibt es nicht mehr, konnte ich also nicht mal testen. Mit 3.2.4 geht es
problemlos.
> Tomcat 4.01 liefert folgendes:
>
> java.lang.NullPointerException
> at Shop.doGet(Shop.java:32)
In Zeile 32 kann keine NPE auftreten. Ist das ganz sicher der Code, der
diese Fehlermeldungen verursacht hat?
Nico
Der Fehler tritt allerdings immer parallel auf beiden Servern auf. Den 3.2
kann/darf ich nicht neu starten.
Christian
Christian
Ausserdem hab ich noch rausgefunden, dass der Server beim ersten Versuch
eine etwas andere Fehlermeldung ausgibt als bei den folgenden.
1:
java.lang.NullPointerException
at Shop.doGet(Shop.java:34)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:740)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at
org.apache.catalina.servlets.InvokerServlet.serveRequest(InvokerServlet.java
:446)
at
org.apache.catalina.servlets.InvokerServlet.doGet(InvokerServlet.java:180)
2... :
tschChristian
Cookie[] cookies = request.getCookies();
if(cookies.length >= 1)
Der Code wirft ab tomcat 4.0.1 eine NullPointerException wenn keine
Cookies beim Client gesetzt sind. Da wird jetzt vom tomcat null anstelle
eines leeren Arrays geliefert. Was ja eigentlich richtig ist. Das war
bei älteren Verionen noch nicht so.
versuch mal:
if((cookies != null) && (cookies.length > 0))
Das Ganze kannst du auch vergleichen bei dem Tomcat Beispiel
CookiesExample Zeile 53 in den untersch. Versionen.
HTH gerhard
Zeile 32 ist bei mir
" registered = true;"
Nico
Wenn wir davon denn mal ausgehen und die Doku erneut lesen...
" public Cookie[] getCookies()
Returns an array containing all of the Cookie objects the client sent with
this request. This method returns null if no cookies were sent."
Ersetzen wir in der Folge die nachfolgende Zeile
if(cookies.length >= 1)
mal durch
if(cookies != null && cookies.length >= 1)
und schauen was passiert.
Nico
ich hab jetzt die Abfrage wie im 4.01 Beispiel, was ich mir natuerlich nicht
so genau angeguckt habe gemacht und es funktioniert. In einem anderen
servlet allerdings hab ich die Abfrage genauso gemacht, mit dem hatte ich
noch gar keine Probleme.
Cookie[] cookies = request.getCookies();
if((cookies != null) && (cookies.length > 0))
cookies != null hatte ich auch schon probiert, dann blieb das Ganze
allerdings beim naechsten Aufruf von cookies.length haengen.
vielen Dank
Christian