0

我正在使用 Selenium 2.24.1 并收到此错误:

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,所有的 jar 文件都带有 selenium-java-2.24.1 和 selenium-server-2.24.1。

即使仅使用 selenium-server-standalone-2.24.1.jar,我仍然会收到此错误消息。

请问有什么帮助吗?

4

2 回答 2

3

我很确定您有一个具有循环依赖关系的对象图。

这是一个例子:

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

public class Child{
    private Parent parent;
}

如果您尝试将其序列化为 JSON,除非您的算法知道循环依赖关系,否则您还将获得 StackOverflow。

因为对于每个父母,都必须创建一个孩子列表,每个孩子都有一个父母,每个孩子都有一个孩子列表,依此类推。

于 2012-06-21T16:05:04.777 回答
1

看起来您的项目具有其他/旧版本的 org.json 类,而不是 WebDriver 在其类路径上需要的类。而且您的 json 版本不适用于 WebDriver。

如果你检查你的 selenium-server-standalone-x.xx.x.jar,你会发现 org.json 包含在内。

这意味着该项目在其类路径上有 2 个不同版本的 json jar。

欢迎来到 JAR 地狱。

解决方案:将您的 json 库替换为带有 selenium 的库,该库位于 /Selenium-x.xx/lib/json-20080701.jar

于 2013-01-16T06:20:24.973 回答