Application Swing -> ImageIO
Résolu/Fermé
morakevi
Messages postés
15
Date d'inscription
lundi 30 juillet 2007
Statut
Membre
Dernière intervention
2 mai 2016
-
30 avril 2016 à 21:13
morakevi Messages postés 15 Date d'inscription lundi 30 juillet 2007 Statut Membre Dernière intervention 2 mai 2016 - 2 mai 2016 à 14:45
morakevi Messages postés 15 Date d'inscription lundi 30 juillet 2007 Statut Membre Dernière intervention 2 mai 2016 - 2 mai 2016 à 14:45
A voir également:
- Application Swing -> ImageIO
- Application mobile - Guide
- Application gps sans internet - Guide
- Desinstaller application windows - Guide
- Application miroir - Guide
- Nommez une application d'appel vidéo ou de visioconférence - Guide
5 réponses
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 019
30 avril 2016 à 21:44
30 avril 2016 à 21:44
Bonjour,
Quand tu dis que ça "bloque" ça veux dire que tu as une exception ?
Si oui laquelle ?
Ou est-ce que ça veut dire que ça mets un temps "infini" ?
Dans ce cas, quand tu es bloqué est-ce que tu peux faire ces deux commandes (dans une console) et coller le résultat ?
1)
Doit renvoyer la liste des processus Java en cours d'exécution.
2)
Renvoie l'état du processus 12345 (à remplacer par le numéro obtenu de processus identifié grâce au jps)
Remarque : que ce soit pour l'exception ou la commande jstack merci de nous indiquer à quelles lignes de code correspond chaque numéro de ligne indiqué par le résultat.
Quand tu dis que ça "bloque" ça veux dire que tu as une exception ?
Si oui laquelle ?
Ou est-ce que ça veut dire que ça mets un temps "infini" ?
Dans ce cas, quand tu es bloqué est-ce que tu peux faire ces deux commandes (dans une console) et coller le résultat ?
1)
jps
Doit renvoyer la liste des processus Java en cours d'exécution.
2)
jstack 12345
Renvoie l'état du processus 12345 (à remplacer par le numéro obtenu de processus identifié grâce au jps)
Remarque : que ce soit pour l'exception ou la commande jstack merci de nous indiquer à quelles lignes de code correspond chaque numéro de ligne indiqué par le résultat.
morakevi
Messages postés
15
Date d'inscription
lundi 30 juillet 2007
Statut
Membre
Dernière intervention
2 mai 2016
8
30 avril 2016 à 21:54
30 avril 2016 à 21:54
Je n'ai aucune exception, il ne passe pas la ligne
étant donné que dans mon fichier de log, je ne vois pas la ligne suivante
J'ai tester en mettant une autre ligne comme par exemple
et ça ne passe pas non plus.
Ce code est exécuter dans un SwingWorker qui boucle sur la liste des documents fourni et pour chaque document fait la conversion.
Ce que j'ai actuellement, il commence sur le premier document, ensuite quand il arrive à la ligne
il passe directement dans la methode done du SwingWorker mais na donc rien fait.
Voici ce que j'ai dans mon log
Iterator iterator = ImageIO.getImageReadersByFormatName("DICOM");
étant donné que dans mon fichier de log, je ne vois pas la ligne suivante
LogFile.getInstance().log("info", "ImageIO.getImageReadersByFormatName(\"DICOM\");");
J'ai tester en mettant une autre ligne comme par exemple
ImageIO.scanForPlugins();
et ça ne passe pas non plus.
Ce code est exécuter dans un SwingWorker qui boucle sur la liste des documents fourni et pour chaque document fait la conversion.
Ce que j'ai actuellement, il commence sur le premier document, ensuite quand il arrive à la ligne
LogFile.getInstance().log("info", "ImageIO.getImageReadersByFormatName(\"DICOM\");");
il passe directement dans la methode done du SwingWorker mais na donc rien fait.
Voici ce que j'ai dans mon log
[Fri Apr 29 09:49:41 CEST 2016]info > Initialization of the application DONE
[Fri Apr 29 09:49:41 CEST 2016]info > clean temp directory C:\Users\MORAYKE\AppData\Local\Temp\DICOM_IMG DONE
[Fri Apr 29 09:49:43 CEST 2016]info > Ouvrir explorateur windows pour choisir un CD/DVD
[Fri Apr 29 09:49:57 CEST 2016]info > Load all file of the folder O:\Medome\PACS\Samples\85509\4299569\DICOM
[Fri Apr 29 09:50:00 CEST 2016]info > Number of file found : 333
[Fri Apr 29 09:50:00 CEST 2016]info > file found : O:\Medome\PACS\Samples\85509\4299569\DICOM\1.2.124.113532.172.22.10.141.20140930.130719.362758139.dcm
[Fri Apr 29 09:50:00 CEST 2016]info > start extractDicomData method
[Fri Apr 29 09:50:00 CEST 2016]info > BufferedImage image = null;
[Fri Apr 29 09:50:00 CEST 2016]info > upload process DONE
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 019
30 avril 2016 à 22:19
30 avril 2016 à 22:19
Pour t'aider merci de faire les commandes que je t'ai donné au moment où l'application bloque.
morakevi
Messages postés
15
Date d'inscription
lundi 30 juillet 2007
Statut
Membre
Dernière intervention
2 mai 2016
8
2 mai 2016 à 07:55
2 mai 2016 à 07:55
Donc voici le résultat de jps
et voici le résultat de jstack
6224 dicomUploadOld.jar
4908
6004 Jps
et voici le résultat de jstack
2016-05-02 07:52:08
Full thread dump Java HotSpot(TM) 64-Bit Server VM (25.77-b03 mixed mode):
"SwingWorker-pool-2-thread-1" #35 daemon prio=5 os_prio=0 tid=0x000000005e2c7000 nid=0x1bb8 waiting on condition [0x000000005f40e000]
java.lang.Thread.State: WAITING (parking)
at sun.misc.Unsafe.park(Native Method)
- parking to wait for <0x00000000d693cc58> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
at java.util.concurrent.locks.LockSupport.park(Unknown Source)
at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(Unknown Source)
at java.util.concurrent.LinkedBlockingQueue.take(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.getTask(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
"Swing-Shell" #22 daemon prio=6 os_prio=0 tid=0x0000000059e8b800 nid=0x1acc waiting on condition [0x000000005dafe000]
java.lang.Thread.State: WAITING (parking)
at sun.misc.Unsafe.park(Native Method)
- parking to wait for <0x00000000d7d90188> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
at java.util.concurrent.locks.LockSupport.park(Unknown Source)
at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(Unknown Source)
at java.util.concurrent.LinkedBlockingQueue.take(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.getTask(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at sun.awt.shell.Win32ShellFolderManager2$ComInvoker$3.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
"TimerQueue" #18 daemon prio=5 os_prio=0 tid=0x000000005a7bf000 nid=0x19a0 waiting on condition [0x000000005d5bf000]
java.lang.Thread.State: WAITING (parking)
at sun.misc.Unsafe.park(Native Method)
- parking to wait for <0x00000000d7d80a50> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
at java.util.concurrent.locks.LockSupport.park(Unknown Source)
at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(Unknown Source)
at java.util.concurrent.DelayQueue.take(Unknown Source)
at javax.swing.TimerQueue.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
"DestroyJavaVM" #15 prio=5 os_prio=0 tid=0x000000000030d800 nid=0x183c waiting on condition [0x0000000000000000]
java.lang.Thread.State: RUNNABLE
"AWT-EventQueue-0" #14 prio=6 os_prio=0 tid=0x000000005a66b800 nid=0x19c4 waiting on condition [0x000000005b65e000]
java.lang.Thread.State: WAITING (parking)
at sun.misc.Unsafe.park(Native Method)
- parking to wait for <0x00000000d7e5e080> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
at java.util.concurrent.locks.LockSupport.park(Unknown Source)
at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(Unknown Source)
at java.awt.EventQueue.getNextEvent(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)
"AWT-Windows" #12 daemon prio=6 os_prio=0 tid=0x000000005a610800 nid=0x19f8 runnable [0x000000005b37f000]
java.lang.Thread.State: RUNNABLE
at sun.awt.windows.WToolkit.eventLoop(Native Method)
at sun.awt.windows.WToolkit.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
"AWT-Shutdown" #11 prio=5 os_prio=0 tid=0x000000005a60f800 nid=0x1a14 in Object.wait() [0x000000005b0de000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0x00000000d7d80dc0> (a java.lang.Object)
at java.lang.Object.wait(Unknown Source)
at sun.awt.AWTAutoShutdown.run(Unknown Source)
- locked <0x00000000d7d80dc0> (a java.lang.Object)
at java.lang.Thread.run(Unknown Source)
"Java2D Disposer" #10 daemon prio=10 os_prio=2 tid=0x000000005a60d800 nid=0x1a10 in Object.wait() [0x000000005af1f000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0x00000000d7d80f70> (a java.lang.ref.ReferenceQueue$Lock)
at java.lang.ref.ReferenceQueue.remove(Unknown Source)
- locked <0x00000000d7d80f70> (a java.lang.ref.ReferenceQueue$Lock)
at java.lang.ref.ReferenceQueue.remove(Unknown Source)
at sun.java2d.Disposer.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
"Service Thread" #9 daemon prio=9 os_prio=0 tid=0x0000000059cc4800 nid=0x1a00 runnable [0x0000000000000000]
java.lang.Thread.State: RUNNABLE
"C1 CompilerThread2" #8 daemon prio=9 os_prio=2 tid=0x0000000059c70800 nid=0x1848 waiting on condition [0x0000000000000000]
java.lang.Thread.State: RUNNABLE
"C2 CompilerThread1" #7 daemon prio=9 os_prio=2 tid=0x0000000057819800 nid=0x1a08 waiting on condition [0x0000000000000000]
java.lang.Thread.State: RUNNABLE
"C2 CompilerThread0" #6 daemon prio=9 os_prio=2 tid=0x0000000057817800 nid=0x1214 waiting on condition [0x0000000000000000]
java.lang.Thread.State: RUNNABLE
"Attach Listener" #5 daemon prio=5 os_prio=2 tid=0x0000000057814800 nid=0x44c waiting on condition [0x0000000000000000]
java.lang.Thread.State: RUNNABLE
"Signal Dispatcher" #4 daemon prio=9 os_prio=2 tid=0x0000000057810000 nid=0x678 runnable [0x0000000000000000]
java.lang.Thread.State: RUNNABLE
"Finalizer" #3 daemon prio=8 os_prio=1 tid=0x00000000577fe000 nid=0x115c in Object.wait() [0x00000000596bf000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0x00000000d7e375c0> (a java.lang.ref.ReferenceQueue$Lock)
at java.lang.ref.ReferenceQueue.remove(Unknown Source)
- locked <0x00000000d7e375c0> (a java.lang.ref.ReferenceQueue$Lock)
at java.lang.ref.ReferenceQueue.remove(Unknown Source)
at java.lang.ref.Finalizer$FinalizerThread.run(Unknown Source)
"Reference Handler" #2 daemon prio=10 os_prio=2 tid=0x00000000577b5000 nid=0x418 in Object.wait() [0x00000000593de000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0x00000000d7e377d8> (a java.lang.ref.Reference$Lock)
at java.lang.Object.wait(Unknown Source)
at java.lang.ref.Reference.tryHandlePending(Unknown Source)
- locked <0x00000000d7e377d8> (a java.lang.ref.Reference$Lock)
at java.lang.ref.Reference$ReferenceHandler.run(Unknown Source)
"VM Thread" os_prio=2 tid=0x00000000577aa000 nid=0x19ec runnable
"GC task thread#0 (ParallelGC)" os_prio=0 tid=0x000000000231c000 nid=0x192c runnable
"GC task thread#1 (ParallelGC)" os_prio=0 tid=0x000000000231d800 nid=0x197c runnable
"GC task thread#2 (ParallelGC)" os_prio=0 tid=0x000000000231f000 nid=0x1950 runnable
"GC task thread#3 (ParallelGC)" os_prio=0 tid=0x0000000002322800 nid=0xae0 runnable
"VM Periodic Task Thread" os_prio=2 tid=0x0000000059ce9800 nid=0x1a04 waiting on condition
JNI global references: 630
morakevi
Messages postés
15
Date d'inscription
lundi 30 juillet 2007
Statut
Membre
Dernière intervention
2 mai 2016
8
2 mai 2016 à 08:18
2 mai 2016 à 08:18
Après avoir un peu chipoter dans mon code j'ai enfin réussi a capté une exception. La voici
Exception in thread "AWT-EventQueue-0" java.util.ServiceConfigurationError: javax.imageio.spi.ImageReaderSpi: Provider com.sun.media.imageioimpl.plugins.jpeg.CLibJPEGImageReaderSpi could not be instantiated
at java.util.ServiceLoader.fail(Unknown Source)
at java.util.ServiceLoader.access$100(Unknown Source)
at java.util.ServiceLoader$LazyIterator.nextService(Unknown Source)
at java.util.ServiceLoader$LazyIterator.next(Unknown Source)
at java.util.ServiceLoader$1.next(Unknown Source)
at javax.imageio.spi.IIORegistry.registerApplicationClasspathSpis(Unknown Source)
at javax.imageio.spi.IIORegistry.<init>(Unknown Source)
at javax.imageio.spi.IIORegistry.getDefaultInstance(Unknown Source)
at javax.imageio.ImageIO.<clinit>(Unknown Source)
at be.fmpfbz.dicomupload.client.tools.DicomTools.extractDicomData(DicomTools.java:64)
at be.fmpfbz.dicomupload.client.tools.DicomTools.loadDicomData(DicomTools.java:186)
at be.fmpfbz.dicomupload.client.DicomUpload.OpenMenuActionPerformed(DicomUpload.java:214)
at be.fmpfbz.dicomupload.client.DicomUpload.access$100(DicomUpload.java:27)
at be.fmpfbz.dicomupload.client.DicomUpload$2.actionPerformed(DicomUpload.java:140)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.AbstractButton.doClick(Unknown Source)
at javax.swing.plaf.basic.BasicMenuItemUI.doClick(Unknown Source)
at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
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.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(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.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$500(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(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)
Caused by: java.lang.IllegalArgumentException: vendorName == null!
at javax.imageio.spi.IIOServiceProvider.<init>(Unknown Source)
at javax.imageio.spi.ImageReaderWriterSpi.<init>(Unknown Source)
at javax.imageio.spi.ImageReaderSpi.<init>(Unknown Source)
at com.sun.media.imageioimpl.plugins.jpeg.CLibJPEGImageReaderSpi.<init>(CLibJPEGImageReaderSpi.java:80)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at java.lang.Class.newInstance(Unknown Source)
... 50 more
morakevi
Messages postés
15
Date d'inscription
lundi 30 juillet 2007
Statut
Membre
Dernière intervention
2 mai 2016
8
2 mai 2016 à 10:15
2 mai 2016 à 10:15
Apèrs avoir encore un peu chercher, j'ai enfin trouver ce qu'il manquait. Il s'agit du vendor dans le fichier MANIFEST.MF.
J'ai donc créé ceci:
Mais je suis bloqué un peu plus loin avec cette erreur -> NoSuchElementException sur cette ligne
Il ne trouve donc pas ImageReader pour les DICOM
J'ai changé mon fichier manifest par ceci mais j'ai toujours la même erreur:
J'ai donc créé ceci:
Manifest-Version: 1.0
Main-Class: be.fmpfbz.dicomupload.client.DicomUpload
Built-By: Kevin MORAY
Created-By: Kevin MORAY
Specification-Title: Java Advanced Imaging Image I/O Tools
Specification-Version: 1.1
Specification-Vendor: Sun Microsystems, Inc.
Implementation-Title: com.sun.media.imageio
Implementation-Version: 1.1
Implementation-Vendor: Sun Microsystems, Inc.
Mais je suis bloqué un peu plus loin avec cette erreur -> NoSuchElementException sur cette ligne
ImageReader reader = (ImageReader) iterator.next();
Il ne trouve donc pas ImageReader pour les DICOM
J'ai changé mon fichier manifest par ceci mais j'ai toujours la même erreur:
Manifest-Version: 1.0
Main-Class: be.fmpfbz.dicomupload.client.DicomUpload
Built-By: Kevin MORAY
Created-By: Kevin MORAY
Implementation-Title: dcm4che DICOM toolkit and utilities
Implementation-Version: 3.3.8-SNAPSHOT
Implementation-Vendor-Id: org.dcm4che
Implementation-Vendor: dcm4che.org
Specification-Title: dcm4che DICOM toolkit and utilities
Specification-Version: 3.3.8-SNAPSHOT
Specification-Vendor: dcm4che.org
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
morakevi
Messages postés
15
Date d'inscription
lundi 30 juillet 2007
Statut
Membre
Dernière intervention
2 mai 2016
8
2 mai 2016 à 14:45
2 mai 2016 à 14:45
J'ai trouvé une solution à ce problème :D
En regardant le code caché dans la méthode
j'ai donc trouvé la classe dédié au DICOM, étant donné que celle-ci ne se charge pas via la ligne
Ensuite j'ai regénéré mon JAR et tout fonctionne enfin :D.
Merci pour votre écoute :ptdr:
En regardant le code caché dans la méthode
ImageIO.scanForPlugins();, j'ai remarquer qu'il charge les provider a partir des fichiers ImageReaderSpi situé dans le répertoire META-INF/services/.
j'ai donc trouvé la classe dédié au DICOM, étant donné que celle-ci ne se charge pas via la ligne
ImageIO.scanForPlugins();, je la charge manuelle dans mon code comme ceci
IIORegistry.getDefaultInstance().registerServiceProvider(new DicomImageReaderSpi());
Ensuite j'ai regénéré mon JAR et tout fonctionne enfin :D.
Merci pour votre écoute :ptdr: