WJ0202S185 : Projet $DAS02: ArcObjects Java : problème avec le
Technical environment
Product: DAS-ARCINFO Company: DASSAULT AVIATION Customer Code: 0WE110C Caller: M. BOURBON GILLES
Question
Projet $DAS02: ArcObjects Java : problème avec le composant MapControl - 200901003 Produit : ArcObjects ArcEngine Java Bonjour, j'ai un problème lorsque je ferme une fenêtre (JFrame) se trouvant au dessus de l'objet MapControl (carte) via la croix rouge de la fenêtre : dans la barre des taches mais l'affichage se fige et l'application ne répond plus. Lorsque je ferme la fenêtre hors de la carte, il n'y a pas de problème. Lorsque je réduis la fenêtre au dessus de la carte, pas de problème. Lorsque je ferme la fenêtre au dessus de la carte via un clic droit sur l'icà´ne Java en haut à gauche de la fenêtre, pas de problème. Lorque la fenêtre est un JFileChooser et que je la ferme au dessus de la carte, pas de problème non plus. . J'ai ajouté à mon instance de l'objet MapControl, un IMapControlEvents2Adapter, et redéfini le onMouseMove pour afficher dans un JTextField les coordonnées du curseur. Lorsque je n'ajoute pas l'adaptater, le problème n'apparait jamais. Pourriez vous m'aider ? Votre problème nous fait penser à un blocage de thread. Cela ressemble au cas de figure suivant: Un objet COM ArcEngine fait un appel à une méthode Java, qui elle-même fait un appel à la méthode XX sur un objet SWING.. Ce dernier n'étant pas appelé dans le thread SWING génère un alors un blocage. (locked.....). Pouvez-vous vérifier que vous ne vous trouvez pas dans ce cas de figure? Par contre peut être pourriez vous obtenir la réponse en sachant que : 1 j'ai ajouté à mon instance de l'objet MapControl, un IMapControlEvents2Adapter, et redéfini le onMouseMove pour afficher dans un JTextField les coordonnées du curseur. 2 si j'ouvre une JFrame et que je la ferme au dessus de la JFrame contenant le MapControl, cela plante.
Solution
Compte tenu de ce que vous me décrivez, je pense que c'est exactement cela que vous rencontrez comme problème. Sun préconise dans ce cas d'utiliser la méthode invokeLater qui sera alors en charge de mettre l'appel dans la pile du thread concerné. Je pense que c'est un problème de développement SWING qui n'est pas lié à ArcGIS Engine. Pouvez-vous vérifier ce point ? En déplaçant l'appel de la méthode mettant à jour le JTextField, dans un thread lancé par invokeLater, le problème ne se reproduit plus. Le fait que les composants ESRI soient gérés dans un Thread spécifique nécessite en effet une attention particulière lors de leur utilisation avec SWING. D'après moi on peut considérer le problème comme résolu. Merci de votre aide.
External remark n°1
composant MapControl - 200901003
Descriptive remark n°2
Produit : ArcObjects ArcEngine Java
Bonjour,
j'ai un problème lorsque je ferme une fenêtre
(JFrame) se trouvant au dessus de l'objet
MapControl (carte) via la croix rouge de la
fenêtre : dans la barre des taches mais
l'affichage se fige et l'application ne répond
plus.
Lorsque je ferme la fenêtre hors de la carte, il
n'y a pas de problème.
Lorsque je réduis la fenêtre au dessus de la
carte, pas de problème.
Lorsque je ferme la fenêtre au dessus de la carte
via un clic droit sur l'icà´ne Java en haut à
gauche de la fenêtre, pas de problème.
Lorque la fenêtre est un JFileChooser et que je
la ferme au dessus de la carte, pas de problème
non plus.
.
J'ai ajouté à mon instance de l'objet MapControl,
un IMapControlEvents2Adapter, et redéfini le
onMouseMove pour afficher dans un JTextField les
coordonnées du curseur.
Lorsque je n'ajoute pas l'adaptater, le problème
n'apparait jamais.
Pourriez vous m'aider ?
Merci d'avance
M. Clin Marc
Descriptive remark n°3
Descriptive remark n°4
M. bourbon.
Le dossier est en cours avec Esri.
Descriptive remark n°5
Bonjour, je n'ai pas eu de réponse de votre part
suite au mail ci dessous.
Dois je changer le destinataire du mail ?
Vous faut il plus de précisions ?
Merci d'avance de votre réponse.
Descriptive remark n°6
Descriptive remark n°7
Bonjour,
Avez-vous pu m'envoyer les logs demandé au niveau
de vos composants Java comme demandé dans mon mail
en attaché ?
Nous avons besoin de ces logs afin de déterminer
la cause de ce problème de thread.
Cordialement
Descriptive remark n°8
Bonjour,
Avez-vous pu m'envoyer les logs demandé au niveau
de vos composants Java comme demandé dans mon mail
en attaché ?
Nous avons besoin de ces logs afin de déterminer
la cause de ce problème de thread.
Cordialement
Descriptive remark n°9
Bonjour,
comme convenu, j'ai essayé de récupérer les logs
générés lors de mon problème de bloquage de
l'application suite à un clique croix rouge sur un
formulaire.
Malheureusement acun ifchier *pid*log n'est créé
et la console est également muette. Auriez vous un
fichier particluier à me faire chercher ?
Sinon je peux vous envoyer un extrait de mon
programme pour que vous reproduisiez l'erreur chez
vous ...
Descriptive remark n°10
Bonjour,
Comme convenu j'ai essayé de récupérer les logs
générés lors des plantages (bloquage application
suite à clique croix rouge formulaire), cependant
il semble qu'aucun fichier *pid*log ne soit créé
lors du plantage.
La console reste muette aussi.
Descriptive remark n°11
Bonsoir,
Votre problème nous fait penser à un blocage de
thread.
Cela ressemble au cas de figure suivant:
Un objet COM ArcEngine fait un appel à une méthode
Java, qui elle-même fait un appel à la méthode XX
sur un objet SWING..
Ce dernier n'étant pas appelé dans le thread SWING
génère un alors un blocage. (locked.....).
Pouvez-vous vérifier que vous ne vous trouvez pas
dans ce cas de figure ?
Cordialement
Descriptive remark n°12
Je ne saurai pas vous répondre.
Par contre peut être pourriez vous obtenir la
réponse en sachant que :
1 j'ai ajouté à mon instance de l'objet
MapControl, un IMapControlEvents2Adapter, et
redéfini le onMouseMove pour afficher dans un
JTextField les coordonnées du curseur.
2 si j'ouvre une JFrame et que je la ferme au
dessus de la JFrame contenant le MapControl, cela
plante.
Descriptive remark n°13
Compte tenu de ce que vous me décrivez, je pense
que c'est exactement cela que vous rencontrez
comme problème.
Sun préconise dans ce cas d'utiliser la méthode
invokeLater qui sera alors en charge de mettre
l'appel dans la pile du thread concerné.
Je pense que c'est un problème de développement
SWING qui n'est pas lié à ArcGIS Engine.
Pouvez-vous vérifier ce point ?
Cordialement
Descriptive remark n°14
Bonjour,
merci de votre réponse.
En déplaçant l'appel de la méthode mettant à jour
le JTextField, dans un thread lancé par
invokeLater, le problème ne se reproduit plus.
Le fait que les composants ESRI soient gérés dans
un Thread spécifique nécessite en effet une
attention particulière lors de leur utilisation
avec SWING.
D'après moi on peut considérer le problème comme
résolu.
Merci de votre aide.
Descriptive remark n°15
Projet $DAS02: ArcObjects Java : problème avec le
composant MapControl - 200901003
Produit : ArcObjects ArcEngine Java
Bonjour,
j'ai un problème lorsque je ferme une fenêtre
(JFrame) se trouvant au dessus de l'objet
MapControl (carte) via la croix rouge de la
fenêtre : dans la barre des taches mais
l'affichage se fige et l'application ne répond
plus.
Lorsque je ferme la fenêtre hors de la carte, il
n'y a pas de problème.
Lorsque je réduis la fenêtre au dessus de la
carte, pas de problème.
Lorsque je ferme la fenêtre au dessus de la carte
via un clic droit sur l'icà´ne Java en haut à
gauche de la fenêtre, pas de problème.
Lorque la fenêtre est un JFileChooser et que je
la ferme au dessus de la carte, pas de problème
non plus.
.
J'ai ajouté à mon instance de l'objet MapControl,
un IMapControlEvents2Adapter, et redéfini le
onMouseMove pour afficher dans un JTextField les
coordonnées du curseur.
Lorsque je n'ajoute pas l'adaptater, le problème
n'apparait jamais.
Pourriez vous m'aider ?
Votre problème nous fait penser à un blocage de
thread.
Cela ressemble au cas de figure suivant:
Un objet COM ArcEngine fait un appel à une méthode
Java, qui elle-même fait un appel à la méthode XX
sur un objet SWING..
Ce dernier n'étant pas appelé dans le thread SWING
génère un alors un blocage. (locked.....).
Pouvez-vous vérifier que vous ne vous trouvez pas
dans ce cas de figure?
Par contre peut être pourriez vous obtenir la
réponse en sachant que :
1 j'ai ajouté à mon instance de l'objet
MapControl, un IMapControlEvents2Adapter, et
redéfini le onMouseMove pour afficher dans un
JTextField les coordonnées du curseur.
2 si j'ouvre une JFrame et que je la ferme au
dessus de la JFrame contenant le MapControl, cela
plante.
Descriptive remark n°16
Compte tenu de ce que vous me décrivez, je pense
que c'est exactement cela que vous rencontrez
comme problème.
Sun préconise dans ce cas d'utiliser la méthode
invokeLater qui sera alors en charge de mettre
l'appel dans la pile du thread concerné.
Je pense que c'est un problème de développement
SWING qui n'est pas lié à ArcGIS Engine.
Pouvez-vous vérifier ce point ?
En déplaçant l'appel de la méthode mettant à jour
le JTextField, dans un thread lancé par
invokeLater, le problème ne se reproduit plus.
Le fait que les composants ESRI soient gérés dans
un Thread spécifique nécessite en effet une
attention particulière lors de leur utilisation
avec SWING.
D'après moi on peut considérer le problème comme
résolu.
Merci de votre aide.
External remark n°17
composant MapControl - 200901003
Keywords
FRKBSWCLI
D1 Article
—
archivado en:
fiche conseil,
escala