2012-06-21 3 views
0

Я использую Selenium 2.24.1, и я получаю эту ошибку:Селен 2 StackOverflowError, JSONObject

Caused an ERROR 
null 
java.lang.StackOverflowError 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
at org.json.JSONObject.populateMap(JSONObject.java:988) 
at org.json.JSONObject.<init>(JSONObject.java:272) 
at org.json.JSONObject.wrap(JSONObject.java:1587) 
at org.json.JSONObject.populateMap(JSONObject.java:990) 
at org.json.JSONObject.<init>(JSONObject.java:272) 

Я не уверен, что мне не хватает, и у меня есть JSon-20080701.jar, и все банки файлы поставлялись с selenium-java-2.24.1 и selenium-server-2.24.1.

даже если использование только selenium-server-standalone-2.24.1.jar, я все еще получаю это сообщение об ошибке.

любая помощь пожалуйста?

ответ

3

Я уверен, что у вас есть граф объектов с циклическими зависимостями.

Вот пример:

public class Parent{ 
    private List<Child> children; 
} 

public class Child{ 
    private Parent parent; 
} 

Если вы пытались сериализовать это JSON, вы также получите StackOverflow, если ваш алгоритм не был осведомлен о циклических зависимостей.

Поскольку для каждого родителя должен быть создан список детей, каждый из которых имеет родителя, каждый из которых имеет список детей и т. Д.

+0

Спасибо за ответ, я использую Селен 2,6 и все было отлично, почему это произойдет только при использовании Selenium 2.24.1? что вы предлагаете для решения? – Sim

+0

Я не знаю Селена, извините. –

1

Похоже, что в вашем проекте есть классы org.json других/более старых версий, чем те, которые необходимы WebDriver для его пути к классам. И ваша версия json не работает с WebDriver.

Если вы проверите свой сервер selenium-server-standalone-x.xx.x.jar, вы найдете, что org.json включен.

Это означает, что проект имеет две разные версии json jar на пути к классу.

Добро пожаловать в JAR hell.

Решение: Заменить библиотеку JSon с приходишь с селеном, который locats в /Selenium-x.xx/lib/json-20080701.jar