com.sun.jdi.InvocationException发生调用方法

我只是想创build一个类的对象,但debugging时得到这个错误。 有谁可以告诉我问题是什么? 这段代码的位置在一些Spring(2.5)服务类中。

还有一个类似的问题: OJB参考描述符1:0的关系? 我应该设置自动检索为false?

非常感谢〜

根本原因是在debuggingjavadebugging接口的时候会调用你的类的toString()在popup框中显示类信息,所以如果toString方法没有被正确的定义,可能会发生这种情况。

在Eclipse中debugging时也有类似的exception。 当我挖空一个对象时,popup框显示一个com.sun.jdi.InvocationException消息。 我的根本原因不是我的类的toString()方法,而是hashCode()方法。 这导致了一个NullPointerException ,导致com.sun.jdi.InvocationException在debugging过程中出现。 一旦我照顾了空指针,一切都按预期工作。

那可能是因为上面提到的其他几件事情。 在我的情况下,问题是一样的,但理由是另一回事。

在一个类(A)中,我有几个对象,一个对象是另一个类(B)和其他一些对象。 在这个过程中,B类中的一个对象(String)变为null,然后试图通过父类(A)访问该对象。

因此,控制台会抛出空点exception,但eclipsedebugging器将显示上述错误。

我希望你能留下来。

对于我来说,当toString被定义为这样的时候,抛出了同样的exception:

 @Override public String toString() { return "ListElem [next=" + next + ", data=" + data + "]"; } 

其中ListElem是一个链表元素,我创build了一个ListElem

 private ListElem<Integer> cyclicLinkedList = new ListElem<>(3); ListElem<Integer> cyclicObj = new ListElem<>(4); ... cyclicLinkedList.setNext(new ListElem<Integer>(2)).setNext(cyclicObj) .setNext(new ListElem<Integer>(6)).setNext(new ListElem<Integer>(2)).setNext(cyclicObj); 

这有效地导致了无法打印的循环链表。 感谢指针。

所以我在这里有同样的问题。 发现我的域名实例正在从hibernate会话中分离出来。 我用isAttached()来检查和附加域使用d.attach()

在我的情况下,在eclipsedebugging器中禁用variables窗口右上angular的“显示逻辑结构”button/图标解决了它。

元素不存在可能有两个原因:

  1. Bad xpath(// * [@ id'forgotQuote])
  2. 正确的xpath但没有元素(// * [contains(text(),'这个文本不在页面中')])

当你正在运行Debug时,你会得到com.sun.jdi.InvocationException,并且你的鼠标hover在WeBElement的引用上(这与Selenium和Java有关)?

我们使用以下内容,但不能区分由于错误的xpath或不存在的元素(有效的xpath语法)是否返回false:

 public static boolean isElementDisplayed(WebElement element) { boolean isDisplayed = false; try { isDisplayed = element.isDisplayed(); } catch (NoSuchElementException e) { ;// No Worries } return isDisplayed; } 

我曾经有过同样的问题。 在我的情况下,toString()方法被严重创build。 确切地说,当我的团队的开发人员被分配了代码清理任务,并将toString(),hashCode()代码和equals()方法尽可能添加到域对象时,toString方法中包含了静态最终variables。 但是在类中,因为过度查看它,所以他包含导致“com.sun.jdi.InvocationException”的最终静态variables,只有当我hover在具有exception的对象上时,才能在debugging中看到此exception。

这是我的情况

我有一个BO类的学生 ,它与另一个BO课程 (他研究的课程) 进行了多对一的映射。

我希望将数据保存到另一个表中,该表具有StudentClasses的 外键 。 在某些情况下,我在某些条件下提供了一个学生 名单 ,每个学生都会有一个class级的参考。

示例代码: –

 Iterator<Student> itr = studentId.iterator(); while (itr.hasNext()) { Student student = (Student) itr.next(); MarksCardSiNoGen bo = new MarksCardSiNoGen(); bo.setStudentId(student); Classes classBo = student.getClasses(); bo.setClassId(classBo); } 

在这里,你可以看到,我设置学生类的引用我想要保存的BO 。 但在debugging时,当我检查student.getClasses()它显示这个exception( com.sun.jdi.InvocationException )。

我发现的问题是,使用HQL查询获取学生列表后,我正在冲洗closures 会话 。 当我删除session.close(); 声明问题解决了。

当我最终将所有的数据保存到表( MarksCardSiNoGen )时,会话被closures。

希望这可以帮助。

删除hashCode()equals()解决了我的问题。 在我的例子中,我使用了Apache的commons-lang哈希代码,并且等同于手动创build非静态类的构build器,所以编译器不会抛出任何exception。 但在运行时它引起了调用exception。

在我的情况下,这是由于对象引用变得陈旧。 我使用selenium webdriver自动化我的应用程序,所以我在文本框中键入内容,然后导航到另一个页面,所以当我回到上一页时,该对象变得陈旧。 所以这是导致exception,我处理它通过再次初始化元素 – PageFactory.initElements(驱动程序,Test.class;

在Eclipse中我得到了类似的exception。 这是由于java.lang.StackOverflowError错误。 我在子类中有overrideIn toString()方法,有JoinColumn ,它是使用父类的对象返回string,从而导致循环依赖。 尝试从toString()删除该对象,它将工作。