Matlab rapports “Exception in thread ”AWT-EventQueue-0“ java.lang.NullPointerException”
Hi interroger sur une erreur java qui se produit à plusieurs reprises dans matlab. Il se produit généralement lorsque matlab est à faire à du lourd avec java. Cela peut par exemple être maintenant la touche ctrl+z ou ctrl+y.
Je l'ai fait par erreur effacer le message d'erreur avant que j'ai copié, mais je pense que je peux passer le cœur du problème de toute façon.
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
...
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
Personne ne sait pourquoi cette erreur se produit? J'ai trouvé quelques informations sur ce à partir de matlab c2007, et ce à cause de qui java swing est thread dangereux et matlab manque de soutien pour assurer la sécurité des threads. Cependant, qui est censé avoir été corrigé dans matlab r2008b. Alors, pourquoi dois-je faire maintenant?
MODIFIER
On a la trace de la pile:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at org.netbeans.editor.BaseDocument.notifyUnmodify(BaseDocument.java:1465)
at org.netbeans.editor.BaseDocument.notifyModifyCheckEnd(BaseDocument.java:816)
at org.netbeans.editor.BaseDocumentEvent.redo(BaseDocumentEvent.java:336)
at javax.swing.undo.UndoManager.redoTo(Unknown Source)
at javax.swing.undo.UndoManager.redo(Unknown Source)
at com.mathworks.mwswing.undo.MUndoManager.redo(MUndoManager.java:255)
at org.netbeans.editor.ActionFactory$RedoAction.actionPerformed(ActionFactory.java:767)
at org.netbeans.editor.BaseAction.actionPerformed(BaseAction.java:259)
at javax.swing.SwingUtilities.notifyAction(Unknown Source)
at javax.swing.JComponent.processKeyBinding(Unknown Source)
at javax.swing.JComponent.processKeyBindings(Unknown Source)
at javax.swing.JComponent.processKeyEvent(Unknown Source)
at com.mathworks.widgets.SyntaxTextPaneBase.processKeyEvent(SyntaxTextPaneBase.java:1187)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.KeyboardFocusManager.redispatchEvent(Unknown Source)
at java.awt.DefaultKeyboardFocusManager.dispatchKeyEvent(Unknown Source)
at java.awt.DefaultKeyboardFocusManager.preDispatchKeyEvent(Unknown Source)
at java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(Unknown Source)
at java.awt.DefaultKeyboardFocusManager.dispatchEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
null
lorsque vous appelez une méthode sur elle, mais sans la trace de la pile complète personne ne peut vous dire quel est l'objet qui est qui. Veuillez inclure toute trace de la pile. Vous pouvez trouver une liste des causes typiques de ici: nullpointerexceptionJe crains que tout cela est impossible, l'erreur n'est pas vraiment reproduit. Il se produit à quelques reprises seulement, mais peut encore être vraiment ennuyeux. Le code appartient à la base de matlab et de la source de cose n'est pas disponible. En fait, j'ai obtenu l'erreur pour les différents objets. Les événements de la souris, matlab gui... je pense que le problème est dû à un stade précoce. Probablement en raison de certains corrompus de l'objet ou du fil de départ avant qu'il est censé le faire. Cependant, je comprends, si vous avez des problèmes lorsque vous ne pouvez pas voir la totalité de la pile.
Eh bien, dans ce cas, il n'y a pas beaucoup que nous pouvons faire à ce sujet, est-il? Problèmes de Threading fait sens pour moi, compte tenu de la Event Dispatch Thread est susceptible de causer des troubles. J'avais commencer à regarder matlabs forums si il y a un bug connu causant un comportement aléatoire comme vous le décrivez.
Ok j'ai réussi à force de l'erreur à nouveau. Voir modifier. Cependant, le lien de La commentaire précédent peut-être donné la réponse. L'erreur se produit dans la plupart des cas, lorsque matlab doit faire des travaux lourds, par exemple, maintenez la touche ctrl+y (refaire) après une longue ctrl+z (annuler) pour de longs morceaux de code. Ces tâches peuvent être à long ted, lorsque pompée rapidement. Je ne suis pas sûr. Et sur la numérisation de matlab forums: il y a beaucoup de questions à ce sujet, mais précieusement quelques réponses.
Veuillez voir ma réponse. Ce n'est pas un définitive réponse, mais une explication raisonnable à votre problème (je pense). Malheureusement, il semble y avoir aucune solution à ce problème, au moins aussi loin que je peux voir. Bonne chance tout de même! 🙂
OriginalL'auteur patrik | 2014-07-29
Vous devez vous connecter pour publier un commentaire.
Bien basé sur votre trace de la pile, probablement, il n'y a pas de réponse définitive à votre question, comme vous l'avez déjà vu dans Matlabs forum, mais compte tenu de cette ligne, je pense qu'il y a une explication possible:
UndoManager classe de maintient interne d'une collection de UndoableEdit objets. Cette collections est en fait inherithed de sa super-classe: CompoundEdit.
La mise en œuvre interne de UndoManager#redo() et UndoManager#redoTo(UndoableEdit edition) ressemble à ceci:
Compte tenu de cette mise en œuvre, et étant donné que le Swing est Event Dispatch Thread (EDT) est enclin à causer des ennuis, je pense que c'est probablement un problème thread entre matlab fil et l'EDT. Spécifiquement parlant de cette matlab méthode invoquée pourrait être la source du problème:
Puisque vous dites matlab doit faire des travaux lourds, il n'est pas déraisonnable de penser que cette méthode est d'essayer de refaire certains de le modifier pourrait bien ne pas être disponibles plus ou peuvent ne pas être disponibles encore, en raison de problèmes de synchronisation avec l'EDT.
OriginalL'auteur dic19
Vous pouvez trouver
~/.matlab
dossier qui contient matlab. Utilisationls -la
pour afficher tous les fichiers et dossiers cachés.Ouvrir un terminal et exécuter
sudo chmod 757 -R ~/.matlab
.De même, il y a un dossier
MATLAB
dansDocuments
.Exécuter
sudo chmod 757 -R ~/Documents/MATLAB
.Maintenant redémarrer matlab sans les privilèges root. Il a travaillé pour moi sur Ubuntu 14.04 et MATLAB2015a.
OriginalL'auteur user6150415