JFreeChart Diagramm speichern - Problem mit ImageIO nach Projektexport

  • Themenstarter Themenstarter tk
  • Beginndatum Beginndatum

tk

Mitglied
Hallo,

ich habe ein Problem mit JFreeChart bzw. besteht das Problem erst nach dem Export des Projekts aus Eclipse.

Und zwar erstelle ich mir ein Diagramm, welches in einem Fenster angeziegt wird. JFreechart stellt dafür Klassen bereit. Das Fenster kommt also von JFreeChart. Jetzt ist es möglich durch Rechtsklick auf das Diagramm es zu speichern oder zu kopieren. Alles von JFreeChart bereitgestellt.

Problem ist jetzt nur, das dann ein Fehler kommt. Dieser tritt allerdings nur nach dem Export aus Eclipse auf. Alles andere funktioniert wunderbar, auch innerhalb von Eclipse funktioniert alles. Anhand der Fehlermeldung der Windows-Konsole würde ich auf ein ImageIO-Problem tippen. Ich kann mich auch so vage daran erinnern solch ein Problem innerhalb Eclipse gehabt zu haben, aber durch einbinden irgendwelcher Bibliotheken ging es dann. Doch Eclipse gibt die Bibliotheken beim Export doch mit, also woran kann der Fehler liegen. Die Fehlermeldung lautet:

Java:
Exception in thread "AWT-EventQueue-0" java.util.ServiceConfigurationError: java
x.imageio.spi.ImageInputStreamSpi: Provider com.sun.media.imageioimpl.stream.Cha
nnelImageInputStreamSpi could not be instantiated: java.lang.IllegalArgumentExce
ption: vendorName == null!
        at java.util.ServiceLoader.fail(Unknown Source)
        at java.util.ServiceLoader.access$100(Unknown Source)
        at java.util.ServiceLoader$LazyIterator.next(Unknown Source)
        at java.util.ServiceLoader$1.next(Unknown Source)
        at javax.imageio.spi.IIORegistry.registerApplicationClasspathSpis(Unknow
n 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 sun.awt.datatransfer.DataTransferer.imageToStandardBytes(Unknown Sour
ce)
        at sun.awt.windows.WDataTransferer.imageToPlatformBytes(Unknown Source)
        at sun.awt.datatransfer.DataTransferer.translateTransferable(Unknown Sou
rce)
        at sun.awt.windows.WDataTransferer.translateTransferable(Unknown Source)

        at sun.awt.windows.WClipboard.setContentsNative(Unknown Source)
        at sun.awt.datatransfer.SunClipboard.setContents(Unknown Source)
        at org.jfree.chart.ChartPanel.doCopy(ChartPanel.java:2713)
        at org.jfree.chart.ChartPanel.actionPerformed(ChartPanel.java:1760)
        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$000(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$1.doIntersectionPrivilege(Unknown Sour
ce)
        at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Sour
ce)
        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$1.doIntersectionPrivilege(Unknown Sour
ce)
        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.ImageInputStreamSpi.<init>(Unknown Source)
        at com.sun.media.imageioimpl.stream.ChannelImageInputStreamSpi.<init>(Ch
annelImageInputStreamSpi.java:63)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)

        at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)

        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Sou
rce)
        at java.lang.reflect.Constructor.newInstance(Unknown Source)
        at java.lang.Class.newInstance0(Unknown Source)
        at java.lang.Class.newInstance(Unknown Source)
        ... 52 more


Vielen Dank für die Hilfe.
 
Ich habe das nochmals an einem anderen Rechner getestet und dort das gleiche Problem. Auch eine Neuinstallation des JDK brachte keine Lösung. Verstehe nicht warum in Eclipse alles funktioniert und nach dem Export gibt es Probleme, allerdings nur an der einen Stelle. Sonst funktioniert alles, also muss das Exportieren der eingebundenen Bibliotheken doch reibungslos laufen.

Irgendjemand eine Idee?
 
mit export meinst du, dass du eine jar baust?
da wäre in zusammenhang mit speichern meine erste Frage, wo willst du speichern? doch nicht in einem Verzeichnis innerhalb des jar oder?
 
Ja, mit dem Export ist das Erstellen einer ausführbaren jar-Datei gemeint.

Das Speichern soll natürlich nicht innerhalb der jar-Datei erfolgen. Gespeicht werden kann quasi überall. JFreeChart zeigt das Diagramm in einem Fenster und nach einem Rechtsklick auf das Diagramm erscheint eine Auswahl mit unter anderem "Speichern unter" sowie kopieren. Bei Speichern kann man zu dem gewüschten Ordner navigieren. Datei hat dann eine Größe von 0. Das Kopieren erfolgt über die Zwischenablage. Egal ob speichern oder kopieren, jedesmal kommt der Fehler. Innerhalb von Eclipse funktioniert alles.
 

Zurück
Oben