com.sun.jdi.InvocationException s’est produite en invoquant la méthode

Je veux juste créer un object de classe, mais j’ai eu cette erreur lors du débogage. Quelqu’un peut-il me dire quel est le problème? L’emplacement de ce code est dans une classe de service Spring (2.5).

Il y a un problème similaire: Descripteur de référence OJB 1: 0 relation? Dois-je régler la récupération automatique sur false?

Merci beaucoup ~

La cause principale est que, lors du débogage de l’interface de débogage Java, l’appel de toSsortingng () de votre classe affichera les informations de classe dans la fenêtre contextuelle. Par conséquent, si la méthode toSsortingng n’est pas définie correctement, cela peut se produire.

J’ai également eu une exception similaire lors du débogage dans Eclipse. Lorsque j’ai repoussé un object, la fenêtre contextuelle affiche un message com.sun.jdi.InvocationException . La cause principale pour moi n’était pas la toSsortingng() de ma classe, mais plutôt la hashCode() . Cela provoquait une NullPointerException , qui faisait que l’ com.sun.jdi.InvocationException apparaissait pendant le débogage. Une fois que je me suis occupé du pointeur null, tout fonctionnait comme prévu.

Eh bien, cela pourrait être dû à plusieurs choses mentionnées par d’autres avant et après. Dans mon cas, le problème était le même mais la raison était autre chose.

Dans une classe (A), j’avais plusieurs objects et l’un des objects était une autre classe (B) avec d’autres objects. Au cours du processus, l’un des objects (Ssortingng) de la classe B était nul, puis j’ai essayé d’accéder à cet object via la classe parente (A).

Ainsi, la console lancera une exception de point nul mais le débogueur éclipse affichera l’erreur mentionnée ci-dessus.

J’espère que vous pourrez faire le rest.

Pour moi, la même exception a été émise lorsque le toSsortingng a été défini en tant que tel:

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

ListElem est un élément de liste lié et j’ai créé un ListElem tant que tel:

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

Cela a effectivement provoqué une liste chaînée cyclique qui ne peut pas être imprimée. Merci pour le pointeur.

J’ai eu le même problème une fois. Dans mon cas, la méthode toSsortingng () a été mal créée. Pour être précis, une variable finale statique a été incluse dans la méthode toSsortingng lorsqu’un développeur a créé une tâche de nettoyage de code pour mon équipe et pour append les méthodes toSsortingng (), hashCode () et equals () aux objects du domaine. mais dans les classes à cause de le regarder, il a inclus la variable statique finale qui a causé “com.sun.jdi.InvocationException” cette exception était visible lors du débogage uniquement lorsque j’ai survolé l’object qui a l’exception.

donc j’ai eu le même problème ici. J’ai découvert que mon instance de domaine se détachait de la session d’hibernation. J’ai utilisé isAttached() pour vérifier et attacher le domaine en utilisant d.attach()

Désactiver le bouton / icône “Afficher la structure logique” dans le coin supérieur droit de la fenêtre des variables dans le débogueur d’éclipse a résolu le problème, dans mon cas.

Il pourrait y avoir deux raisons pour lesquelles un élément n’existe pas:

  1. Mauvais xpath (// * [@ id’forgotQuote])
  2. Correct xpath mais pas d’élément (// * [contient (text (), ‘Ce texte n’est pas dans la page’)])

Voulez-vous obtenir com.sun.jdi.InvocationException dans les deux cas lorsque vous exécutez Debug et que vous passez votre souris sur une référence à WeBElement (ceci avec Selenium et Java)?

Nous utilisons ce qui suit, mais nous ne pouvons pas distinguer si elle retourne false en raison d’un mauvais xpath ou d’un élément inexistant (syntaxe xpath valide):

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

C’était mon cas

J’avais une classe BO de Student qui avait un mappage plusieurs à un autre classe de classe BO (la classe qu’il étudiait).

Je voulais enregistrer les données dans une autre table, qui contenait des clés étrangères de Student et de Classes . À un certain moment de l’exécution, j’apportais une liste d’ étudiants sous certaines conditions, et chaque élève aura une référence de classe.

Exemple de code: –

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

Ici, vous pouvez le voir, je mets à la fois la référence des étudiants et des classes au BO que je veux enregistrer. Mais lors du débogage lorsque j’ai inspecté student.getClasses() il student.getClasses() cette exception ( com.sun.jdi.InvocationException ).

Le problème que j’ai trouvé était que, après avoir récupéré la liste des étudiants en utilisant la requête HQL , je vidangeais et fermais la session . Lorsque j’ai supprimé cette session.close(); déclaration le problème a été résolu.

La session a été fermée lorsque j’ai finalement enregistré toutes les données dans la table ( MarksCardSiNoGen ).

J’espère que cela t’aides.

Supprimer hashCode() et equals() résolu mon problème. Dans mon cas, j’ai utilisé le code de hachage commons-lang d’Apache et égalise les générateurs pour créer manuellement des classes non statiques, de sorte que le compilateur n’a généré aucune exception. Mais à l’exécution, il a provoqué l’exception d’invocation.

Dans mon cas, c’était dû au fait que la référence d’object devenait obsolète. J’automatisais mon application en utilisant le sélecteur de webémission de selenium, donc je tapais quelque chose dans une zone de texte, puis il naviguait vers une autre page, donc pendant que je reviens à la page précédente, cet object est obsolète. Donc, cela provoquait l’exception, je l’ai géré en initialisant à nouveau les éléments – PageFactory.initElements (driver, Test.class;

J’ai eu une exception similaire dans Eclipse. Cela était dû à l’erreur java.lang.StackOverflowError . J’ai JoinColumn méthode toSsortingng() dans la classe enfant, avec JoinColumn , qui JoinColumn chaîne en utilisant un object de la classe parent, ce qui entraînait une dépendance circulaire. Essayez de supprimer cet object de toSsortingng() , et cela fonctionnera.

J’ai reçu com.sun.jdi.InvocationException occurred invoking method lorsque j’ai chargé le champ d’entité chargé qui a utilisé la configuration secondaire de la firebase database ( Spring Boot avec 2 bases de données – le chargement différé avec la deuxième configuration ne fonctionne pas ). La solution temporaire consistait à append FetchType.EAGER .

J’étais confronté au même problème car j’utilisais les annotations Lombok @Data qui créaient des méthodes de toSsortingng et de hashcode dans les fichiers de classe. J’ai donc supprimé l’annotation @Data et utilisé une annotation @Gettter @Setter spécifique pour résoudre mon problème.

Nous devrions utiliser @Data uniquement lorsque nous avons besoin de tous les @ToSsortingng, @EqualsAndHashCode, @Getter sur tous les champs et de @Setter sur tous les champs non définitifs et de @RequiredArgsConstructor.

J’ai fait face au même problème une fois. Dans mon cas, c’était à cause de la méthode d’ equals remplacée. L’une des valeurs arrivait null .