gpt4 book ai didi

java.lang.ClassCastException : java. lang.StackOverflowError 无法转换为 java.lang.Exception

转载 作者:行者123 更新时间:2023-11-29 10:15:46 31 4
gpt4 key购买 nike

实际上我在执行我的java程序时遇到了下面提到的错误

  Exception in thread "pool-1-thread-1" java.lang.ClassCastException: java.lang.StackOverflowError cannot be cast to java.lang.Exception

实际上我有一个名为 Test_A 的 Java 类,其中包含以下称为 Login() 和 Logout() 的方法并有另一个名为 Test_B 的 Java 类,其中包含方法 VerifyValidUser()。

class Test_A {

Test_B b = new Test_B();

public void login()
{
driver.findElement(By.name("userName")).sendKeys(userName);
driver.findElement(By.name("password")).sendKeys(password);
driver.findElement(By.name("login")).click();

b.verifyLoginValidUser();
}

public void logout()
{
driver.findElement(By.linkText("SIGN-OFF")).click();
}
}

class Test_B {

Test_A a = new Test_A()

public void verifyLoginValidUser()
{
if(isElementPresent(By.linkText("SIGN-OFF")))
{
}
a.logout();
} }

所以在执行上面的代码时,它会抛出上面提到的错误消息

谁能告诉我背后的原因

谢谢

实际堆栈跟踪:

Exception in thread "pool-1-thread-1" java.lang.ClassCastException: java.lang.StackOverflowError cannot be cast to java.lang.Exception
at supportlibraries.DriverScript.driveTestExecution(DriverScript.java:106)
at allocator.ParallelRunner.invokeTestScript(ParallelRunner.java:60)
at allocator.ParallelRunner.run(ParallelRunner.java:41)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)

最佳答案

那么堆栈溢出的原因很简单:

class Test_A {
Test_B b = new Test_B();
}

class Test_B {
Test_A a = new Test_A();
}

构造Test_A的实例涉及构造Test_B的实例,这涉及构造Test_A的实例等。你应该重新设计你的类消除这种循环依赖。 (有保留依赖性的替代方案,但添加参数化构造函数 - 虽然这些可以工作,但打破依赖性将是一个更好的选择。)

ClassCastException 大概是一些将 Throwable 转换为 Exception 的代码片段 - 不幸的是我们无法告诉 哪里 那段代码没有堆栈跟踪。它甚至可能不是您的代码。

关于java.lang.ClassCastException : java. lang.StackOverflowError 无法转换为 java.lang.Exception,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18403733/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com