Comment pouvons-nous utiliser cela pour obtenir un meilleur idée de l'endroit où se trouve le bug dans notre code ? Y a-t-il autre chose que nous puissions faire [ ] actuellement) pour localiser la fonction ou la ligne qui a échoué ?
Dans ce cas, l'impression du message en soi ne sera probablement pas d'une grande utilité. Ce dont vous avez besoin, c'est d'un suivi de pile avec les noms des fichiers sources et les numéros de ligne .
-
Assurez-vous que tous les fichiers ".class" / JARs pertinents ont été construits avec les informations de débogage du fichier et du numéro de ligne inclus. C'est la valeur par défaut, mais la compilation avec "-g:none" enlèvera ces informations... tout comme la plupart des obfuscateurs de fichiers JAR.
-
Ensuite, ajoutez un bloc try / catch pour attraper la IllegalMonitorStateException
et soit appeler ex.printStackTrace()
ou enregistrez l'exception.
À partir de la trace de la pile, vous devriez être en mesure de voir quelle ligne du code a déclenché l'exception. Il est probable qu'il s'agisse d'un appel à Object.wait(...)
ou quelque chose comme ça. Consultez la javadoc de la méthode incriminée pour savoir dans quelles circonstances l'exception est levée.
(Et une fois que vous avez terminé, n'oubliez pas de déplacer le bloc try / catch que vous avez ajouté).