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

xyy*_*xyy 69 java spring

我只是想创建一个类的对象,但在调试时遇到了这个错误.谁能告诉我这是什么问题?此代码的位置在一些Spring(2.5)Service类中.

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

非常感谢〜

小智 85

根本原因是在调试java调试接口时将调用类的toString()以在弹出框中显示类信息,因此如果未正确定义toString方法,则可能会发生这种情况.


ste*_*hom 27

在Eclipse中进行调试时,我也有类似的异常.当我将鼠标移到一个对象上时,弹出框显示一条com.sun.jdi.InvocationException消息.我的根本原因不是toString()我班级的hashCode()方法,而是方法.它导致a NullPointerException,导致com.sun.jdi.InvocationException在调试期间出现.一旦我处理了空指针,一切都按预期工作.


nov*_*ice 13

好吧,这可能是因为其他人之前和之后提到的一些事情.在我的情况下,问题是相同的,但理由是另一回事.

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

因此,控制台将抛出零点异常,但eclipse调试器将显示上述错误.

我希望你能做剩下的事.


Moh*_*sif 6

我遇到了同样的问题,因为我使用 Lombok @Data 注释在类文件中创建 toString 和 hashcode 方法,因此我删除了 @Data 注释并使用特定的 @Gettter @Setter 注释来解决我的问题。

仅当我们需要所有字段上的所有@ToString、@EqualsAndHashCode、@Getter,以及所有非最终字段上的@Setter 和@RequiredArgsConstructor 时,我们才应该使用@Data。


ari*_*rin 5

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

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

ListElem链接列表元素在哪里,我创建了一个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);
Run Code Online (Sandbox Code Playgroud)

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