In JBoss AS 7, got an error of Native Library xxx already loaded in another classloader
mgao3000 May 11, 2012 12:52 PMI am working on migrating an App from JBoss 4.2.3 to JBoss AS 7.1.1. Now I am facing a problem says "Native Library xxx already loaded in another classloader".
To be specific: Here are the errors:
11:22:17,854 ERROR [stderr] (http--127.0.0.1-80-4) Caused by: java.lang.UnsatisfiedLinkError: Native Library E:\programs\jdk1.6.0_29\jre\bin\jpeg.dll already loaded in another classloader
11:22:17,855 ERROR [stderr] (http--127.0.0.1-80-4) at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1772)
11:22:17,856 ERROR [stderr] (http--127.0.0.1-80-4) at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1724)
11:22:17,856 ERROR [stderr] (http--127.0.0.1-80-4) at java.lang.Runtime.loadLibrary0(Runtime.java:823)
11:22:17,857 ERROR [stderr] (http--127.0.0.1-80-4) at java.lang.System.loadLibrary(System.java:1028)
11:22:17,857 ERROR [stderr] (http--127.0.0.1-80-4) at sun.security.action.LoadLibraryAction.run(Unknown Source)
11:22:17,858 ERROR [stderr] (http--127.0.0.1-80-4) at java.security.AccessController.doPrivileged(Native Method)
11:22:17,859 ERROR [stderr] (http--127.0.0.1-80-4) at sun.awt.image.codec.JPEGImageDecoderImpl.<clinit>(Unknown Source)
11:22:17,859 ERROR [stderr] (http--127.0.0.1-80-4) at com.sun.image.codec.jpeg.JPEGCodec.createJPEGDecoder(Unknown Source)
11:22:17,860 ERROR [stderr] (http--127.0.0.1-80-4) at com.sun.media.jai.codecimpl.JPEGImage.<init>(JPEGImageDecoder.java:106)
11:22:17,861 ERROR [stderr] (http--127.0.0.1-80-4) at com.sun.media.jai.codecimpl.JPEGImageDecoder.decodeAsRenderedImage(JPEGImageDecoder.java:46)
11:22:17,862 ERROR [stderr] (http--127.0.0.1-80-4) at com.sun.media.jai.opimage.CodecRIFUtil.create(CodecRIFUtil.java:88)
11:22:17,865 ERROR [stderr] (http--127.0.0.1-80-4) at com.sun.media.jai.opimage.JPEGRIF.create(JPEGRIF.java:43)
11:22:17,867 ERROR [stderr] (http--127.0.0.1-80-4) ... 114 more
In the App, we need to load an image (e.g. a jpeg format image) and then customize it (e.g. resize the image). The logic is roughly as the following:
1. get the URL pointing to the image file
2. get the inputStream of the URL: InputStream imageStream = imageUrl.openStream();
3. readinputStream into byte array: byte[] imageArray;
4. ByteArraySeekableStream byteArraySeekableStream = new ByteArraySeekableStream(imageArray);
5. then do: javax.media.jai.RenderedOp imageRenderedOp = javax.media.jai.JAI.create("stream", byteArraySeekableStream);
somehow, the imageRenderedOp object is not properly created, we get the above exception when trying to do: imageRenderedOp.getHeight();
The same App runs well under JBoss 4.2.3. I am wondering if the error is caused by the Modularized class loading in JBoss AS7?
Could someone please give us some advices on how to resolve the problem?
Thanks a lot in advance.
Regards,
Michael