2016-08-05 43 views
0

ich einen Dienst erstellt Restful Mit Spring-Framework, und ich versuche, eine Methode, um einen Anruf zu Selenium Java, mit dem Fahrer Google Chrome, enthalten aber das Objekt WebDriver driver = new ChromeDriver();Verarbeitung des Handlers fehlgeschlagen; verschachtelte Ausnahme ist java.lang.StackOverflowError

zu erstellen Dies erzeugt mir eine Ausnahme:

org.springframework.web.util.NestedServletException: Handler processing failed; nested exception is java.lang.StackOverflowError 
    org.springframework.web.servlet.DispatcherServlet.triggerAfterCompletionWithError(DispatcherServlet.java:1302) 
    org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:977) 
    org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:893) 
    org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:968) 
    org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:859) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:622) 
    org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:844) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:729) 
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) 
causa raíz 

java.lang.StackOverflowError 
    java.lang.Exception.<init>(Exception.java:102) 
    java.lang.ReflectiveOperationException.<init>(ReflectiveOperationException.java:89) 
    java.lang.reflect.InvocationTargetException.<init>(InvocationTargetException.java:72) 
    sun.reflect.GeneratedMethodAccessor95.invoke(Unknown Source) 
    sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    java.lang.reflect.Method.invoke(Method.java:497) 
    org.json.JSONObject.populateMap(JSONObject.java:1015) 
    org.json.JSONObject.<init>(JSONObject.java:279) 
    org.json.JSONObject.wrap(JSONObject.java:1527) 
    org.json.JSONObject.populateMap(JSONObject.java:1017) 
    org.json.JSONObject.<init>(JSONObject.java:279) 
    org.json.JSONObject.wrap(JSONObject.java:1527) 
    org.json.JSONObject.populateMap(JSONObject.java:1017) 
    org.json.JSONObject.<init>(JSONObject.java:279) 
    org.json.JSONObject.wrap(JSONObject.java:1527) 

Unabhängige in einer Hauptklasse läuft reibungslos, aber ich benötige es von einem Service Erholsamer

+0

Können Sie ein Code-Snippet einfügen, in dem es reibungslos läuft, und einen weiteren Snipper, der die Ausnahme auslöst? – Julian

Antwort

1

Jeder Thread in einer Java-Anwendung verfügt über einen eigenen Stapel, ein Ort, Verfahren, bei dem Aufrufe und lokale Variablen werden gespeichert. Der Fehler, den Sie erwähnen, tritt normalerweise auf, wenn dieser Stack voll ist. Im Prinzip macht der aktuelle Thread viele Aufrufe an bestimmte Methoden (dies ist der glückliche Fall; eine andere Facette wäre eine Endlosschleife).

Versuchen Sie, den Java-Prozess mit einer höheren Stapelgröße auszuführen und zu sehen, ob der Fehler erneut auftritt. Dies kann die -Xss Eigenschaft festgelegt werden: -Xss4m

+0

Die Grundursache der stackoverflow Ausnahme ist die Notwendigkeit hier. Nicht die Grundlagen der Ausnahme selbst. Beachten Sie, dass der Stack-Trace keinen Hinweis auf einen Teil des Projekts selbst gibt, was das Debugging viel schwieriger macht. Ihre Antwort ist nicht hilfreich. – Siddharth

1

ich einige Stunden damit verbracht, mit Stackoverflow-Fehlern zu kämpfen ... hoffen, dass dies jemand

hilft machte ich einen dummen Fehler

Sie bitte die folgenden Code-Schnipsel sehen: -

Falscher Code: -

Map abcWithKey = new HashMap<>(); 

abcWithKey.put("key_1", abcWithKey); 

Correct Code: -

Map abcWithKey = new HashMap<>(); 

abcWithKey.put("key_1", abc); 

wo abc ist eine map, also anstatt abc (andere karte) hinzuzufügen ich habe die gleiche map rekursiv hinzugefügt.