You are viewing a plain text version of this content. The canonical link for it is here.
Posted to batik-users@xmlgraphics.apache.org by Simon Mittermüller <si...@googlemail.com> on 2009/01/22 12:09:53 UTC

Document saved as JPEG - getting IncompatibleClassChangeError

Hi,

Saving as SVG or PNG works fine.

But I am getting error when doing this:
I use this piece of code to save a document as a JPEG:

<code>
public void saveAsJPEG(File file) throws IOException,  
TranscoderException {

		JPEGTranscoder t = new JPEGTranscoder();
		t.addTranscodingHint(JPEGTranscoder.KEY_QUALITY, new Float(1.0));

		TranscoderInput input = new TranscoderInput(document);
		OutputStream ostream = new FileOutputStream(file);
		TranscoderOutput output = new TranscoderOutput(ostream);
		t.addTranscodingHint(JPEGTranscoder.KEY_WIDTH, new Float(100));
		t.addTranscodingHint(JPEGTranscoder.KEY_HEIGHT, new Float(100));
		t.transcode(input, output);
		ostream.flush();
		ostream.close();
	}
</code>

Exception in thread "AWT-EventQueue-0"  
java.lang.IncompatibleClassChangeError: Found interface  
com.sun.image.codec.jpeg.JPEGImageEncoder, but class was expected
	at  
org 
.apache 
.batik.ext.awt.image.codec.jpeg.JPEGImageWriter.writeImage(Unknown  
Source)
	at  
org.apache.batik.transcoder.image.JPEGTranscoder.writeImage(Unknown  
Source)
	at  
org.apache.batik.transcoder.image.ImageTranscoder.transcode(Unknown  
Source)
	at  
org.apache.batik.transcoder.XMLAbstractTranscoder.transcode(Unknown  
Source)
	at  
org.apache.batik.transcoder.SVGAbstractTranscoder.transcode(Unknown  
Source)
	at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java: 
2028)
	...


Has anybody had similar problems?
Where is "com.sun.image.codec.jpeg.JPEGImageEncoder" located? Inside  
the batik.jar? Or is it a problem of my com.sun.image.codec.jpeg  
package?


batik jar: batik-1.7.jar
I'am using JDK 1.5 on MacOsX 10.5.6.
Developing with Eclipse 3.4


Thx

Simon

Re: Document saved as JPEG - getting IncompatibleClassChangeError

Posted by Helder Magalhães <he...@gmail.com>.
> Expected was org.apache.batik.ext.awt.image.codec.jpeg.JPEGImageWriter... See if you have this class in your classpath..

This should be "batik-1.7\lib\batik-codec.jar", if you are using the
original Jar archives shipped in the distribution. ;-)

Also, take a look at issues 46513 [1] and 38183 [2] if you intend to
use the current development versions - there is some effort into
moving out from those proprietary classes into standard ones. :-)

Hope this helps,

 Helder Magalhães

[1] https://issues.apache.org/bugzilla/show_bug.cgi?id=46513
[2] https://issues.apache.org/bugzilla/show_bug.cgi?id=38183

---------------------------------------------------------------------
To unsubscribe, e-mail: batik-users-unsubscribe@xmlgraphics.apache.org
For additional commands, e-mail: batik-users-help@xmlgraphics.apache.org


AW: Document saved as JPEG - getting IncompatibleClassChangeError

Posted by Kerschbaum Michael <m....@pke.at>.
Hello,

 
I'am using JDK 1.4.2 ? Perhaps thats the problem, but in the code is never such an exception thrown. I sounds for me that something is wrong with you batik version, perhaps a jar file is missing... 
This was found interface com.sun.image.codec.jpeg.JPEGImageEncoder

Expected was org.apache.batik.ext.awt.image.codec.jpeg.JPEGImageWriter... See if you have this class in your classpath..

Mit freundlichen Grüßen Michael Kerschbaum

 


-----Ursprüngliche Nachricht-----
Von: Simon Mittermüller [mailto:simon.mittermueller@googlemail.com] 
Gesendet: Mittwoch, 28. Jänner 2009 17:59
An: batik-users@xmlgraphics.apache.org
Betreff: Re: Document saved as JPEG - getting IncompatibleClassChangeError

Hi,

No, does not work for me:

Exception in thread "AWT-EventQueue-0"  
java.lang.IncompatibleClassChangeError: Found interface com.sun.image.codec.jpeg.JPEGImageEncoder, but class was expected
	at
org
.apache
.batik.ext.awt.image.codec.jpeg.JPEGImageWriter.writeImage(Unknown
Source)
	at
org.apache.batik.transcoder.image.JPEGTranscoder.writeImage(Unknown
Source)
	at
org.apache.batik.transcoder.image.ImageTranscoder.transcode(Unknown
Source)
	at
org.apache.batik.transcoder.XMLAbstractTranscoder.transcode(Unknown
Source)
	at
org.apache.batik.transcoder.SVGAbstractTranscoder.transcode(Unknown
Source)
	at experimentalcode.simon.gui.PatternPlot.saveAsJPEG(PatternPlot.java: 
564)
	at experimentalcode.simon.gui.PatternControlPanel
$ImageSaveDialog.actionPerformed(PatternControlPanel.java:494)
	at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java: 
2028)
	at javax.swing.AbstractButton
$Handler.actionPerformed(AbstractButton.java:2351)
	at
javax
.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java: 
387)
	at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java: 
242)
	at
javax
.swing
.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java: 
236)
	at java.awt.Component.processMouseEvent(Component.java:6126)
	at javax.swing.JComponent.processMouseEvent(JComponent.java:3265)
	at java.awt.Component.processEvent(Component.java:5891)
	at java.awt.Container.processEvent(Container.java:2102)
	at java.awt.Component.dispatchEventImpl(Component.java:4497)
	at java.awt.Container.dispatchEventImpl(Container.java:2160)
	at java.awt.Component.dispatchEvent(Component.java:4327)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java: 
4366)
	at java.awt.LightweightDispatcher.processMouseEvent(Container.java: 
4030)
	at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3960)
	at java.awt.Container.dispatchEventImpl(Container.java:2146)
	at java.awt.Window.dispatchEventImpl(Window.java:2440)
	at java.awt.Component.dispatchEvent(Component.java:4327)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
	at
java
.awt
.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java: 
300)
	at
java
.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java: 
210)
	at
java
.awt
.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java: 
200)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java: 
195)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java: 
187)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:121)



Exception occurs on
jtrans.transcode(input, output);


I've never seen an IncompatibleClassChangeError.


Is Batik and the Sun implemention different? (different versions?)

In the batik sources, I cant find
"com.sun.image.codec.jpeg.JPEGImageEncoder" class or interface.
The JPEGTranscoder is located in the package "org.apache.batik.transcoder.image".

What version of JPEGImageEncoder do I need?

Do I need the Java Image I/O?
Do I need to download it?

Is there another way for saving a DOM (SVGDocument) to a JPEG?

-----------
JDK 1.5 for Macosx
batik-1.7

thx.
Simon.

On 22. Jan 2009, at 14:14 , Kerschbaum Michael wrote:

> Hello,
>
> I'am just writting it into an byteArray?!
>  Works fine...
>
>
> ....
>
> byte[] jpegByteArr = null;
>
> public void makeJpeg() {
>   logger.debug("Entering makeJpeg!");
>   long duracel = System.currentTimeMillis();
>   try {
>    JPEGTranscoder jtrans = new JPEGTranscoder();
>    jtrans.addTranscodingHint(JPEGTranscoder.KEY_QUALITY, new 
> Float(1));
>    jtrans.addTranscodingHint(JPEGTranscoder.KEY_WIDTH, new 
> Float(150));
>    jtrans.addTranscodingHint(JPEGTranscoder.KEY_HEIGHT, new 
> Float(150));
>
>    TranscoderInput input = new TranscoderInput(ag.getSVGDocument());
>    ByteArrayOutputStream outStream = new ByteArrayOutputStream();
>    TranscoderOutput output = new TranscoderOutput(outStream);
>
>    jtrans.transcode(input, output);
>    jpegByteArr = outStream.toByteArray();
>    outStream.flush();
>    outStream.close();
>   } catch (Exception e) {
>    logger.error(e.getMessage());
>   }
>   logger.info("Duration creating JPEG: "
>     + (System.currentTimeMillis() - duracel) + " ms");  }
>
> .....
>
> Mit freundlichen Grüßen Michael Kerschbaum
>
>
> Von: Simon Mittermüller [mailto:simon.mittermueller@googlemail.com]
> Gesendet: Donnerstag, 22. Jänner 2009 12:10
> An: batik-users@xmlgraphics.apache.org
> Betreff: Document saved as JPEG - getting IncompatibleClassChangeError
>
> Hi,
>
> Saving as SVG or PNG works fine.
>
> But I am getting error when doing this:
> I use this piece of code to save a document as a JPEG:
>
> <code>
> public void saveAsJPEG(File file) throws IOException, 
> TranscoderException {
>
> JPEGTranscoder t = new JPEGTranscoder(); 
> t.addTranscodingHint(JPEGTranscoder.KEY_QUALITY, new Float(1.0));
>
> TranscoderInput input = new TranscoderInput(document); OutputStream 
> ostream = new FileOutputStream(file); TranscoderOutput output = new 
> TranscoderOutput(ostream); 
> t.addTranscodingHint(JPEGTranscoder.KEY_WIDTH, new Float(100)); 
> t.addTranscodingHint(JPEGTranscoder.KEY_HEIGHT, new Float(100)); 
> t.transcode(input, output); ostream.flush(); ostream.close(); } 
> </code>
>
> Exception in thread "AWT-EventQueue-0"  
> java.lang.IncompatibleClassChangeError: Found interface 
> com.sun.image.codec.jpeg.JPEGImageEncoder, but class was expected at 
> org .apache 
> .batik.ext.awt.image.codec.jpeg.JPEGImageWriter.writeImage(Unknown
> Source)
> at
> org.apache.batik.transcoder.image.JPEGTranscoder.writeImage(Unknown
> Source)
> at
> org.apache.batik.transcoder.image.ImageTranscoder.transcode(Unknown
> Source)
> at
> org.apache.batik.transcoder.XMLAbstractTranscoder.transcode(Unknown
> Source)
> at
> org.apache.batik.transcoder.SVGAbstractTranscoder.transcode(Unknown
> Source)
> at
> javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java: 
> 2028)
> ...
>
>
> Has anybody had similar problems?
> Where is "com.sun.image.codec.jpeg.JPEGImageEncoder" located? Inside 
> the batik.jar? Or is it a problem of my com.sun.image.codec.jpeg 
> package?
>
>
> batik jar: batik-1.7.jar
> I'am using JDK 1.5 on MacOsX 10.5.6.
> Developing with Eclipse 3.4
>
>
> Thx
>
> Simon


---------------------------------------------------------------------
To unsubscribe, e-mail: batik-users-unsubscribe@xmlgraphics.apache.org
For additional commands, e-mail: batik-users-help@xmlgraphics.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: batik-users-unsubscribe@xmlgraphics.apache.org
For additional commands, e-mail: batik-users-help@xmlgraphics.apache.org


Re: Document saved as JPEG - getting IncompatibleClassChangeError

Posted by th...@kodak.com.
Hi Simon,

"Simon Mittermüller" <si...@googlemail.com> wrote on 
01/28/2009 11:58:53 AM:

> Exception in thread "AWT-EventQueue-0" 
> java.lang.IncompatibleClassChangeError: Found interface 
> com.sun.image.codec.jpeg.JPEGImageEncoder, but class was expected

   It sounds like the latest OS X JVM changed that 'class' from a
class to an interface.  Probably if you rebuilt Batik on that
machine it would work, but that build probably wouldn't work on
windows, etc...

   I don't think this is a Batik problem, other than the fact
that ideally we wouldn't use these classes.  You should be able
to use the ImageIO version of the transcoders (especially for
JPEG).

Re: Document saved as JPEG - getting IncompatibleClassChangeError

Posted by Simon Mittermüller <si...@googlemail.com>.
Hi,

No, does not work for me:

Exception in thread "AWT-EventQueue-0"  
java.lang.IncompatibleClassChangeError: Found interface  
com.sun.image.codec.jpeg.JPEGImageEncoder, but class was expected
	at  
org 
.apache 
.batik.ext.awt.image.codec.jpeg.JPEGImageWriter.writeImage(Unknown  
Source)
	at  
org.apache.batik.transcoder.image.JPEGTranscoder.writeImage(Unknown  
Source)
	at  
org.apache.batik.transcoder.image.ImageTranscoder.transcode(Unknown  
Source)
	at  
org.apache.batik.transcoder.XMLAbstractTranscoder.transcode(Unknown  
Source)
	at  
org.apache.batik.transcoder.SVGAbstractTranscoder.transcode(Unknown  
Source)
	at experimentalcode.simon.gui.PatternPlot.saveAsJPEG(PatternPlot.java: 
564)
	at experimentalcode.simon.gui.PatternControlPanel 
$ImageSaveDialog.actionPerformed(PatternControlPanel.java:494)
	at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java: 
2028)
	at javax.swing.AbstractButton 
$Handler.actionPerformed(AbstractButton.java:2351)
	at  
javax 
.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java: 
387)
	at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java: 
242)
	at  
javax 
.swing 
.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java: 
236)
	at java.awt.Component.processMouseEvent(Component.java:6126)
	at javax.swing.JComponent.processMouseEvent(JComponent.java:3265)
	at java.awt.Component.processEvent(Component.java:5891)
	at java.awt.Container.processEvent(Container.java:2102)
	at java.awt.Component.dispatchEventImpl(Component.java:4497)
	at java.awt.Container.dispatchEventImpl(Container.java:2160)
	at java.awt.Component.dispatchEvent(Component.java:4327)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java: 
4366)
	at java.awt.LightweightDispatcher.processMouseEvent(Container.java: 
4030)
	at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3960)
	at java.awt.Container.dispatchEventImpl(Container.java:2146)
	at java.awt.Window.dispatchEventImpl(Window.java:2440)
	at java.awt.Component.dispatchEvent(Component.java:4327)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
	at  
java 
.awt 
.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java: 
300)
	at  
java 
.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java: 
210)
	at  
java 
.awt 
.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java: 
200)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java: 
195)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java: 
187)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:121)



Exception occurs on
jtrans.transcode(input, output);


I've never seen an IncompatibleClassChangeError.


Is Batik and the Sun implemention different? (different versions?)

In the batik sources, I cant find  
"com.sun.image.codec.jpeg.JPEGImageEncoder" class or interface.
The JPEGTranscoder is located in the package  
"org.apache.batik.transcoder.image".

What version of JPEGImageEncoder do I need?

Do I need the Java Image I/O?
Do I need to download it?

Is there another way for saving a DOM (SVGDocument) to a JPEG?

-----------
JDK 1.5 for Macosx
batik-1.7

thx.
Simon.

On 22. Jan 2009, at 14:14 , Kerschbaum Michael wrote:

> Hello,
>
> I'am just writting it into an byteArray?!
>  Works fine...
>
>
> ....
>
> byte[] jpegByteArr = null;
>
> public void makeJpeg() {
>   logger.debug("Entering makeJpeg!");
>   long duracel = System.currentTimeMillis();
>   try {
>    JPEGTranscoder jtrans = new JPEGTranscoder();
>    jtrans.addTranscodingHint(JPEGTranscoder.KEY_QUALITY, new  
> Float(1));
>    jtrans.addTranscodingHint(JPEGTranscoder.KEY_WIDTH, new  
> Float(150));
>    jtrans.addTranscodingHint(JPEGTranscoder.KEY_HEIGHT, new  
> Float(150));
>
>    TranscoderInput input = new TranscoderInput(ag.getSVGDocument());
>    ByteArrayOutputStream outStream = new ByteArrayOutputStream();
>    TranscoderOutput output = new TranscoderOutput(outStream);
>
>    jtrans.transcode(input, output);
>    jpegByteArr = outStream.toByteArray();
>    outStream.flush();
>    outStream.close();
>   } catch (Exception e) {
>    logger.error(e.getMessage());
>   }
>   logger.info("Duration creating JPEG: "
>     + (System.currentTimeMillis() - duracel) + " ms");
>  }
>
> .....
>
> Mit freundlichen Grüßen Michael Kerschbaum
>
>
> Von: Simon Mittermüller [mailto:simon.mittermueller@googlemail.com]
> Gesendet: Donnerstag, 22. Jänner 2009 12:10
> An: batik-users@xmlgraphics.apache.org
> Betreff: Document saved as JPEG - getting IncompatibleClassChangeError
>
> Hi,
>
> Saving as SVG or PNG works fine.
>
> But I am getting error when doing this:
> I use this piece of code to save a document as a JPEG:
>
> <code>
> public void saveAsJPEG(File file) throws IOException,  
> TranscoderException {
>
> JPEGTranscoder t = new JPEGTranscoder();
> t.addTranscodingHint(JPEGTranscoder.KEY_QUALITY, new Float(1.0));
>
> TranscoderInput input = new TranscoderInput(document);
> OutputStream ostream = new FileOutputStream(file);
> TranscoderOutput output = new TranscoderOutput(ostream);
> t.addTranscodingHint(JPEGTranscoder.KEY_WIDTH, new Float(100));
> t.addTranscodingHint(JPEGTranscoder.KEY_HEIGHT, new Float(100));
> t.transcode(input, output);
> ostream.flush();
> ostream.close();
> }
> </code>
>
> Exception in thread "AWT-EventQueue-0"  
> java.lang.IncompatibleClassChangeError: Found interface  
> com.sun.image.codec.jpeg.JPEGImageEncoder, but class was expected
> at  
> org 
> .apache 
> .batik.ext.awt.image.codec.jpeg.JPEGImageWriter.writeImage(Unknown  
> Source)
> at  
> org.apache.batik.transcoder.image.JPEGTranscoder.writeImage(Unknown  
> Source)
> at  
> org.apache.batik.transcoder.image.ImageTranscoder.transcode(Unknown  
> Source)
> at  
> org.apache.batik.transcoder.XMLAbstractTranscoder.transcode(Unknown  
> Source)
> at  
> org.apache.batik.transcoder.SVGAbstractTranscoder.transcode(Unknown  
> Source)
> at  
> javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java: 
> 2028)
> ...
>
>
> Has anybody had similar problems?
> Where is "com.sun.image.codec.jpeg.JPEGImageEncoder" located? Inside  
> the batik.jar? Or is it a problem of my com.sun.image.codec.jpeg  
> package?
>
>
> batik jar: batik-1.7.jar
> I'am using JDK 1.5 on MacOsX 10.5.6.
> Developing with Eclipse 3.4
>
>
> Thx
>
> Simon


---------------------------------------------------------------------
To unsubscribe, e-mail: batik-users-unsubscribe@xmlgraphics.apache.org
For additional commands, e-mail: batik-users-help@xmlgraphics.apache.org


AW: Document saved as JPEG - getting IncompatibleClassChangeError

Posted by Kerschbaum Michael <m....@pke.at>.
Hello,
 
I'am just writting it into an byteArray?!
 Works fine...
 
 
....
 
byte[] jpegByteArr = null;
 
public void makeJpeg() {
  logger.debug("Entering makeJpeg!");
  long duracel = System.currentTimeMillis();
  try {
   JPEGTranscoder jtrans = new JPEGTranscoder();
   jtrans.addTranscodingHint(JPEGTranscoder.KEY_QUALITY, new Float(1));
   jtrans.addTranscodingHint(JPEGTranscoder.KEY_WIDTH, new Float(150));
   jtrans.addTranscodingHint(JPEGTranscoder.KEY_HEIGHT, new Float(150));
 
   TranscoderInput input = new TranscoderInput(ag.getSVGDocument());
   ByteArrayOutputStream outStream = new ByteArrayOutputStream();
   TranscoderOutput output = new TranscoderOutput(outStream);
 
   jtrans.transcode(input, output);
   jpegByteArr = outStream.toByteArray();
   outStream.flush();
   outStream.close();
  } catch (Exception e) {
   logger.error(e.getMessage());
  }
  logger.info("Duration creating JPEG: "
    + (System.currentTimeMillis() - duracel) + " ms");
 }
 
.....
 
Mit freundlichen Grüßen Michael Kerschbaum

 

________________________________

Von: Simon Mittermüller [mailto:simon.mittermueller@googlemail.com] 
Gesendet: Donnerstag, 22. Jänner 2009 12:10
An: batik-users@xmlgraphics.apache.org
Betreff: Document saved as JPEG - getting IncompatibleClassChangeError


Hi,


Saving as SVG or PNG works fine.


But I am getting error when doing this:
I use this piece of code to save a document as a JPEG:


<code>
public void saveAsJPEG(File file) throws IOException, TranscoderException {

JPEGTranscoder t = new JPEGTranscoder();
t.addTranscodingHint(JPEGTranscoder.KEY_QUALITY, new Float(1.0));

TranscoderInput input = new TranscoderInput(document);
OutputStream ostream = new FileOutputStream(file);
TranscoderOutput output = new TranscoderOutput(ostream);
t.addTranscodingHint(JPEGTranscoder.KEY_WIDTH, new Float(100));
t.addTranscodingHint(JPEGTranscoder.KEY_HEIGHT, new Float(100));
t.transcode(input, output);
ostream.flush();
ostream.close();
}
</code>

Exception in thread "AWT-EventQueue-0" java.lang.IncompatibleClassChangeError: Found interface com.sun.image.codec.jpeg.JPEGImageEncoder, but class was expected
at org.apache.batik.ext.awt.image.codec.jpeg.JPEGImageWriter.writeImage(Unknown Source)
at org.apache.batik.transcoder.image.JPEGTranscoder.writeImage(Unknown Source)
at org.apache.batik.transcoder.image.ImageTranscoder.transcode(Unknown Source)
at org.apache.batik.transcoder.XMLAbstractTranscoder.transcode(Unknown Source)
at org.apache.batik.transcoder.SVGAbstractTranscoder.transcode(Unknown Source)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2028)
...


Has anybody had similar problems?
Where is "com.sun.image.codec.jpeg.JPEGImageEncoder" located? Inside the batik.jar? Or is it a problem of my com.sun.image.codec.jpeg package?


batik jar: batik-1.7.jar
I'am using JDK 1.5 on MacOsX 10.5.6.
Developing with Eclipse 3.4


Thx

Simon