com.sun.jdi.InvocationException occurred invoking method

JavaSpring

Java Problem Overview


I just want to create an object of class, but got this error when debugging. Can anybody tell me what the problem is? The location of this code is in some Spring(2.5) Service class.

There is a similar problem: OJB Reference Descriptor 1:0 relationship? Should I set auto-retrieve to false?

Thanks a lot~

Java Solutions


Solution 1 - Java

The root cause is that when debugging the java debug interface will call the toString() of your class to show the class information in the pop up box, so if the toString method is not defined correctly, this may happen.

Solution 2 - Java

I also had a similar exception when debugging in Eclipse. When I moused-over an object, the pop up box displayed an com.sun.jdi.InvocationException message. The root cause for me was not the toString() method of my class, but rather the hashCode() method. It was causing a NullPointerException, which caused the com.sun.jdi.InvocationException to appear during debugging. Once I took care of the null pointer, everything worked as expected.

Solution 3 - Java

Well, it might be because of several things as mentioned by others before and after. In my case the problem was same but reason was something else.

In a class (A), I had several objects and one of object was another class (B) with some other objects. During the process, one of the object (String) from class B was null, and then I tried to access that object via parent class (A).

Thus, console will throw null point exception but eclipse debugger will show above mentioned error.

I hope you can do the remaining.

Solution 4 - Java

For me the same exception was thrown when the toString was defined as such:

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

Where ListElem is a linked list element and I created a ListElem as such:

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);

This effectively caused a cyclic linked list that cannot be printed. Thanks for the pointer.

Solution 5 - Java

I was facing the same issue because I was using Lombok @Data annotation that was creating toString and hashcode methods in class files, so I removed @Data annotation and used specific @Gettter @Setter annotation that fixed my issue.

we should use @Data only when we need all @ToString, @EqualsAndHashCode, @Getter on all fields, and @Setter on all non-final fields, and @RequiredArgsConstructor.

Solution 6 - Java

I had the same issue once. In my case toString() method was badly created. TO be precise a static final variable was included in the toString method when a developer form my team was assigned code cleaning task and to add toString(), hashCode() code and equals() methods to domain objects where ever possible. but in of the classes because of over looking at it, he included final static variable that caused the "com.sun.jdi.InvocationException" this exception was visible on debugging only when I hovered over the object which has the exception.

Solution 7 - Java

I got similar exception in Eclipse. This was due to java.lang.StackOverflowError error. I had overriden toString() method in child class, having JoinColumn, which was returning string using object of parentclass, resulting in circular dependency. Try to remove that object from toString(), and it will work.

Solution 8 - Java

so I had same problem here. Found out that my domain instance was getting detached from the hibernate session. I used isAttached() to check and attached the domain using d.attach()

Solution 9 - Java

Disabling 'Show Logical Structure' button/icon of the upper right corner of the variables window in the eclipse debugger resolved it, in my case.

Solution 10 - Java

This was my case

I had a entity Student which was having many-to-one relation with another entity Classes (the classes which he studied).

I wanted to save the data into another table, which was having foreign keys of both Student and Classes. At some instance of execution, I was bringing a List of Students under some conditions, and each Student will have a reference of Classes class.

Sample code :-

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);
}

Here you can see that, I'm setting both Student and Classes reference to the BO I want to save. But while debugging when I inspected student.getClasses() it was showing this exception(com.sun.jdi.InvocationException).

The problem I found was that, after fetching the Student list using HQL query, I was flushing and closing the session. When I removed that session.close(); statement the problem was solved.

The session was closed when I finally saved all the data into table(MarksCardSiNoGen).

Hope this helps.

Solution 11 - Java

I have received com.sun.jdi.InvocationException occurred invoking method when I lazy loaded entity field which used secondary database config (https://stackoverflow.com/questions/48424490/spring-boot-with-2-database-configs-lazy-loading-with-second-config-does-not-w). Temporary solution was to add FetchType.EAGER.

Solution 12 - Java

There could be two reasons an element doesn't exist:

  1. Bad xpath (//*[@id'forgotQuote])
  2. Correct xpath but no element (//*[contains(text(),'This text is not in the page')])

Would you get com.sun.jdi.InvocationException in either case when you are running Debug and you hover your mouse over a reference to the WeBElement (this with Selenium and Java)???

We use the following, but can't distinguish if it returns false due to bad xpath or non-existent element (valid xpath syntax):

public static boolean isElementDisplayed(WebElement element) {
	boolean isDisplayed = false;

	try {
		isDisplayed = element.isDisplayed();
	} catch (NoSuchElementException e) {
		;// No Worries
	}
	return isDisplayed;
}

Solution 13 - Java

Removing hashCode() and equals() solved my issue. In my case, I used Apache's commons-lang hash code and equals builders for creating non-static classes manually, so the compiler didn't throw any exception. But at runtime it caused the invocation exception.

Solution 14 - Java

In my case it was due to the object reference getting stale. I was automating my application using selenium webdriver, so i type something into a text box and then it navigates to another page, so while i come back on the previous page , that object gets stale. So this was causing the exception, I handled it by again initialising the elements - PageFactory.initElements(driver, Test.class;

Solution 15 - Java

I also faced the same problem. In my case I was hitting a java.util.UnknownFormatConversionException. I figured this out only after putting a printStackTrace call. I resolved it by changing my code as shown below.

from:

StringBuilder sb = new StringBuilder();
sb.append("***** Test Details *****\n");
String.format("[Test: %1]", sb.toString());

to:

String.format("[Test: %s]", sb.toString());

Solution 16 - Java

I faced the same problem once. In my case it was because of overridden equals method. One values was coming null.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionxyyView Question on Stackoverflow
Solution 1 - JavaFrankView Answer on Stackoverflow
Solution 2 - JavastepthomView Answer on Stackoverflow
Solution 3 - JavanoviceView Answer on Stackoverflow
Solution 4 - JavaarinView Answer on Stackoverflow
Solution 5 - JavaMohdTausifView Answer on Stackoverflow
Solution 6 - JavaPraneethView Answer on Stackoverflow
Solution 7 - JavaNeelesh SharmaView Answer on Stackoverflow
Solution 8 - Javamonal86View Answer on Stackoverflow
Solution 9 - JavaclrView Answer on Stackoverflow
Solution 10 - JavaArun SudhakaranView Answer on Stackoverflow
Solution 11 - JavaJustinas JakavonisView Answer on Stackoverflow
Solution 12 - Javauser3257891View Answer on Stackoverflow
Solution 13 - JavaPraneethView Answer on Stackoverflow
Solution 14 - JavaGloria RampurView Answer on Stackoverflow
Solution 15 - JavaSailesh ChandranView Answer on Stackoverflow
Solution 16 - Javasunny View Answer on Stackoverflow