preethi selvaraju
preethi selvaraju

Reputation: 155

OpenJDK Java: JAI "Error: One factory fails for the operation "jpeg""

The below sample program failed to run and throwing exception shown in error segment.

OS: Solaris 11
Java Version: OpenJDK 8
JAI: JAI libraries got from geosolutions not from Oracle. jai_codec.jar, jai_core.jar, jai-imageio-core-1.4.0.jar and mlibwrapper.jar.

JAI-Ext: https://github.com/geosolutions-it/jai-ext/wiki

JAISample.java:

import java.awt.Frame;
import java.awt.image.renderable.ParameterBlock;
import java.io.IOException;
import javax.media.jai.Interpolation;
import javax.media.jai.JAI;
import javax.media.jai.RenderedOp;
import com.sun.media.jai.codec.FileSeekableStream;
import javax.media.jai.widget.ScrollingImagePanel;
/**
 * This program decodes an image file of any JAI supported
 * formats, such as GIF, JPEG, TIFF, BMP, PNM, PNG, into a
 * RenderedImage, scales the image by 2X with bilinear
 * interpolation, and then displays the result of the scale
 * operation.
 */
public class JAISampleProgram {
 /** The main method. */
 public static void main(String[] args) {
 /* Validate input. */
// if (args.length != 1) {
//System.out.println("Usage: java JAISampleProgram input_image_filename");
// System.exit(-1);
// }
 /*
 * Create an input stream from the specified file name
 * to be used with the file decoding operator.
 */
 FileSeekableStream stream = null;
 try {
 stream = new FileSeekableStream("/opt/XRX_NEXGENBLACK/current/IPMC/SFM20/images/SFM_174_0_0_0.jpg");
 } catch (IOException e) {
 e.printStackTrace();
 System.exit(0);
 }
 /* Create an operator to decode the image file. */
 RenderedOp image1 = JAI.create("stream", stream);
 /*
* Create a standard bilinear interpolation object to be
 * used with the “scale” operator.
 */
 Interpolation interp = Interpolation.getInstance(
Interpolation.INTERP_BILINEAR);
 /**
* Stores the required input source and parameters in a
* ParameterBlock to be sent to the operation registry,
 * and eventually to the “scale” operator.
 */
 ParameterBlock params = new ParameterBlock();
 params.addSource(image1);
 params.add(2.0F); // x scale factor
 params.add(2.0F); // y scale factor
 params.add(0.0F); // x translate
 params.add(0.0F); // y translate
 params.add(interp); // interpolation method
 /* Create an operator to scale image1. */
 RenderedOp image2 = JAI.create("scale", params);
 /* Get the width and height of image2. */
 int width = image2.getWidth();
 int height = image2.getHeight();
/* Attach image2 to a scrolling panel to be displayed. */
 ScrollingImagePanel panel = new ScrollingImagePanel(
image2, width, height);
 /* Create a frame to contain the panel. */
 Frame window = new Frame("JAI Sample Program");
 window.add(panel);
 window.pack();
 window.show();
 }
}

Error:

Error: One factory fails for the operation "jpeg"
Occurs in: javax.media.jai.ThreadSafeOperationRegistry
java.lang.reflect.InvocationTargetException
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at javax.media.jai.FactoryCache.invoke(FactoryCache.java:122)
        at javax.media.jai.OperationRegistry.invokeFactory(OperationRegistry.java:1674)
        at javax.media.jai.ThreadSafeOperationRegistry.invokeFactory(ThreadSafeOperationRegistry.java:473)
        at javax.media.jai.registry.RIFRegistry.create(RIFRegistry.java:332)
        at com.sun.media.jai.opimage.StreamRIF.create(StreamRIF.java:102)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at javax.media.jai.FactoryCache.invoke(FactoryCache.java:122)
        at javax.media.jai.OperationRegistry.invokeFactory(OperationRegistry.java:1674)
        at javax.media.jai.ThreadSafeOperationRegistry.invokeFactory(ThreadSafeOperationRegistry.java:473)
        at javax.media.jai.registry.RIFRegistry.create(RIFRegistry.java:332)
        at javax.media.jai.RenderedOp.createInstance(RenderedOp.java:819)
        at javax.media.jai.RenderedOp.createRendering(RenderedOp.java:867)
        at javax.media.jai.RenderedOp.getRendering(RenderedOp.java:888)
        at javax.media.jai.RenderedOp.createInstance(RenderedOp.java:799)
        at javax.media.jai.RenderedOp.createRendering(RenderedOp.java:867)
        at javax.media.jai.RenderedOp.getWidth(RenderedOp.java:2179)
        at JAISampleProgram.main(JAISampleProgram.java:58)
Caused by: java.lang.NoClassDefFoundError: com/sun/image/codec/jpeg/ImageFormatException
        at com.sun.media.jai.codecimpl.JPEGImageDecoder.decodeAsRenderedImage(JPEGImageDecoder.java:46)
        at com.sun.media.jai.opimage.CodecRIFUtil.create(CodecRIFUtil.java:88)
        at com.sun.media.jai.opimage.JPEGRIF.create(JPEGRIF.java:43)
        ... 24 more
Caused by: java.lang.ClassNotFoundException: com.sun.image.codec.jpeg.ImageFormatException
        at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:418)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:351)
        ... 27 more
Error: One factory fails for the operation "stream"
Occurs in: javax.media.jai.ThreadSafeOperationRegistry
java.lang.reflect.InvocationTargetException
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at javax.media.jai.FactoryCache.invoke(FactoryCache.java:122)
        at javax.media.jai.OperationRegistry.invokeFactory(OperationRegistry.java:1674)
        at javax.media.jai.ThreadSafeOperationRegistry.invokeFactory(ThreadSafeOperationRegistry.java:473)
        at javax.media.jai.registry.RIFRegistry.create(RIFRegistry.java:332)
        at javax.media.jai.RenderedOp.createInstance(RenderedOp.java:819)
        at javax.media.jai.RenderedOp.createRendering(RenderedOp.java:867)
        at javax.media.jai.RenderedOp.getRendering(RenderedOp.java:888)
        at javax.media.jai.RenderedOp.createInstance(RenderedOp.java:799)
        at javax.media.jai.RenderedOp.createRendering(RenderedOp.java:867)
        at javax.media.jai.RenderedOp.getWidth(RenderedOp.java:2179)
        at JAISampleProgram.main(JAISampleProgram.java:58)
Caused by: javax.media.jai.util.ImagingException: All factories fail for the operation "jpeg"
        at javax.media.jai.OperationRegistry.invokeFactory(OperationRegistry.java:1687)
        at javax.media.jai.ThreadSafeOperationRegistry.invokeFactory(ThreadSafeOperationRegistry.java:473)
        at javax.media.jai.registry.RIFRegistry.create(RIFRegistry.java:332)
        at com.sun.media.jai.opimage.StreamRIF.create(StreamRIF.java:102)
        ... 15 more
Caused by: java.lang.reflect.InvocationTargetException
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at javax.media.jai.FactoryCache.invoke(FactoryCache.java:122)
        at javax.media.jai.OperationRegistry.invokeFactory(OperationRegistry.java:1674)
        ... 18 more
Caused by: java.lang.NoClassDefFoundError: com/sun/image/codec/jpeg/ImageFormatException
        at com.sun.media.jai.codecimpl.JPEGImageDecoder.decodeAsRenderedImage(JPEGImageDecoder.java:46)
        at com.sun.media.jai.opimage.CodecRIFUtil.create(CodecRIFUtil.java:88)
        at com.sun.media.jai.opimage.JPEGRIF.create(JPEGRIF.java:43)
        ... 24 more
Caused by: java.lang.ClassNotFoundException: com.sun.image.codec.jpeg.ImageFormatException
        at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:418)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:351)
        ... 27 more
Exception in thread "main" javax.media.jai.util.ImagingException: All factories fail for the operation "stream"
        at javax.media.jai.OperationRegistry.invokeFactory(OperationRegistry.java:1687)
        at javax.media.jai.ThreadSafeOperationRegistry.invokeFactory(ThreadSafeOperationRegistry.java:473)
        at javax.media.jai.registry.RIFRegistry.create(RIFRegistry.java:332)
        at javax.media.jai.RenderedOp.createInstance(RenderedOp.java:819)
        at javax.media.jai.RenderedOp.createRendering(RenderedOp.java:867)
        at javax.media.jai.RenderedOp.getRendering(RenderedOp.java:888)
        at javax.media.jai.RenderedOp.createInstance(RenderedOp.java:799)
        at javax.media.jai.RenderedOp.createRendering(RenderedOp.java:867)
        at javax.media.jai.RenderedOp.getWidth(RenderedOp.java:2179)
        at JAISampleProgram.main(JAISampleProgram.java:58)
Caused by: java.lang.reflect.InvocationTargetException
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at javax.media.jai.FactoryCache.invoke(FactoryCache.java:122)
        at javax.media.jai.OperationRegistry.invokeFactory(OperationRegistry.java:1674)
        ... 9 more
Caused by: javax.media.jai.util.ImagingException: All factories fail for the operation "jpeg"
        at javax.media.jai.OperationRegistry.invokeFactory(OperationRegistry.java:1687)
        at javax.media.jai.ThreadSafeOperationRegistry.invokeFactory(ThreadSafeOperationRegistry.java:473)
        at javax.media.jai.registry.RIFRegistry.create(RIFRegistry.java:332)
        at com.sun.media.jai.opimage.StreamRIF.create(StreamRIF.java:102)
        ... 15 more
Caused by: java.lang.reflect.InvocationTargetException
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at javax.media.jai.FactoryCache.invoke(FactoryCache.java:122)
        at javax.media.jai.OperationRegistry.invokeFactory(OperationRegistry.java:1674)
        ... 18 more
Caused by: java.lang.NoClassDefFoundError: com/sun/image/codec/jpeg/ImageFormatException
        at com.sun.media.jai.codecimpl.JPEGImageDecoder.decodeAsRenderedImage(JPEGImageDecoder.java:46)
        at com.sun.media.jai.opimage.CodecRIFUtil.create(CodecRIFUtil.java:88)
        at com.sun.media.jai.opimage.JPEGRIF.create(JPEGRIF.java:43)
        ... 24 more
Caused by: java.lang.ClassNotFoundException: com.sun.image.codec.jpeg.ImageFormatException
        at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:418)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:351)
        ... 27 more
Caused by:
java.lang.reflect.InvocationTargetException
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at javax.media.jai.FactoryCache.invoke(FactoryCache.java:122)
        at javax.media.jai.OperationRegistry.invokeFactory(OperationRegistry.java:1674)
        at javax.media.jai.ThreadSafeOperationRegistry.invokeFactory(ThreadSafeOperationRegistry.java:473)
        at javax.media.jai.registry.RIFRegistry.create(RIFRegistry.java:332)
        at javax.media.jai.RenderedOp.createInstance(RenderedOp.java:819)
        at javax.media.jai.RenderedOp.createRendering(RenderedOp.java:867)
        at javax.media.jai.RenderedOp.getRendering(RenderedOp.java:888)
        at javax.media.jai.RenderedOp.createInstance(RenderedOp.java:799)
        at javax.media.jai.RenderedOp.createRendering(RenderedOp.java:867)
        at javax.media.jai.RenderedOp.getWidth(RenderedOp.java:2179)
        at JAISampleProgram.main(JAISampleProgram.java:58)
Caused by: javax.media.jai.util.ImagingException: All factories fail for the operation "jpeg"
        at javax.media.jai.OperationRegistry.invokeFactory(OperationRegistry.java:1687)
        at javax.media.jai.ThreadSafeOperationRegistry.invokeFactory(ThreadSafeOperationRegistry.java:473)
        at javax.media.jai.registry.RIFRegistry.create(RIFRegistry.java:332)
        at com.sun.media.jai.opimage.StreamRIF.create(StreamRIF.java:102)
        ... 15 more
Caused by: java.lang.reflect.InvocationTargetException
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at javax.media.jai.FactoryCache.invoke(FactoryCache.java:122)
        at javax.media.jai.OperationRegistry.invokeFactory(OperationRegistry.java:1674)
        ... 18 more
Caused by: java.lang.NoClassDefFoundError: com/sun/image/codec/jpeg/ImageFormatException
        at com.sun.media.jai.codecimpl.JPEGImageDecoder.decodeAsRenderedImage(JPEGImageDecoder.java:46)
        at com.sun.media.jai.opimage.CodecRIFUtil.create(CodecRIFUtil.java:88)
        at com.sun.media.jai.opimage.JPEGRIF.create(JPEGRIF.java:43)
        ... 24 more
Caused by: java.lang.ClassNotFoundException: com.sun.image.codec.jpeg.ImageFormatException
        at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:418)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:351)
        ... 27 more






1626371845 Error: Could not find mediaLib accelerator wrapper classes. Continuing in pure Java mode.
1626371845 Occurs in: com.sun.media.jai.mlib.MediaLibAccessor
java.lang.NoClassDefFoundError: com/sun/medialib/mlib/Image
at com.sun.media.jai.mlib.MediaLibAccessor$1.run(MediaLibAccessor.java:248)
at java.security.AccessController.doPrivileged(Native Method)
at com.sun.media.jai.mlib.MediaLibAccessor.setUseMlib(MediaLibAccessor.java:245)
at com.sun.media.jai.mlib.MediaLibAccessor.useMlib(MediaLibAccessor.java:177)
at com.sun.media.jai.mlib.MediaLibAccessor.isMediaLibCompatible(MediaLibAccessor.java:357)
at com.sun.media.jai.mlib.MediaLibAccessor.isMediaLibCompatible(MediaLibAccessor.java:315)
at com.sun.media.jai.mlib.MlibScaleRIF.create(MlibScaleRIF.java:67)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at javax.media.jai.FactoryCache.invoke(FactoryCache.java:122)
at javax.media.jai.OperationRegistry.invokeFactory(OperationRegistry.java:1674)
at javax.media.jai.ThreadSafeOperationRegistry.invokeFactory(ThreadSafeOperationRegistry.java:473)
at javax.media.jai.registry.RIFRegistry.create(RIFRegistry.java:332)
at javax.media.jai.RenderedOp.createInstance(RenderedOp.java:819)
at javax.media.jai.RenderedOp.createRendering(RenderedOp.java:867)
at javax.media.jai.RenderedOp.getWidth(RenderedOp.java:2179)
at com.sun.media.jai.widget.DisplayJAI.set(DisplayJAI.java:144)
at com.xerox.controller.commonGUI.ImageViewer.scaleImage(ImageViewer.java:1677)
at com.xerox.controller.commonGUI.ImageViewer.displayPage(ImageViewer.java:1400)
at com.xerox.controller.commonGUI.ImageViewer.createPage(ImageViewer.java:2008)
at com.xerox.controller.commonGUI.ImageViewer.updatePageCount(ImageViewer.java:2186)
at com.xerox.controller.commonGUI.ImageViewer$ViewJobListener.handleEvent(ImageViewer.java:2357)
at com.xerox.controller.util.EventDispatcher.serviceListeners(EventDispatcher.java:151)
at com.xerox.controller.util.EventDispatcher$EventConsumer.run(EventDispatcher.java:123)
Caused by: java.lang.ClassNotFoundException: com.sun.medialib.mlib.Image
at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
at java.lang.ClassLoader.loadClass(ClassLoader.java:418)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:352)
at java.lang.ClassLoader.loadClass(ClassLoader.java:351)
... 26 more

Have already gone through some of the stackoverflow posts which suggested to include jai-imageio-core-1.4.0.jar and mlibwrapper.jar and tried. But no luck. Below are the jai related jars available in my path.

./jre1.8.0_292/lib/ext/jai-imageio-core-1.4.0.jar
./jre1.8.0_292/lib/ext/mlibwrapper_jai.jar
./jre1.8.0_292/lib/ext/jai_core.jar
./jre1.8.0_292/lib/ext/jai_codec.jar
./jdk1.8.0_292/jre/lib/ext/mlibwrapper_jai.jar
./jdk1.8.0_292/jre/lib/ext/jai_core.jar
./jdk1.8.0_292/jre/lib/ext/jai_codec.jar
./jdk1.8.0_292/jre/lib/ext/jai-imageio-core-1.4.0.jar

Any additional jars we need or any configuration need to do? What did I miss. It will be more helpful.

Upvotes: 0

Views: 1726

Answers (1)

oliverbachmann
oliverbachmann

Reputation: 133

You will have to try a bunch of jai_codec.jar, jai_core.jar from different locations in the net and also make sure to have mlibwrapper installed. You can concentrate on version 1.13. If it's not working then it's because you are using a different version of the jars.

Upvotes: 0

Related Questions