问题描述
在我的Tomcat 8服务器中的最新部署中,尝试通过ImageIO.read()将PNG图像读取为InputStream时出现以下错误:
InputStream imageInput = storageResource.getData();
BufferedImage originalImage = ImageIO.read(imageInput);
错误:
javax.imageio.IIOException: codecLib error
at com.sun.media.imageioimpl.plugins.png.CLibPNGImageReader.decode(CLibPNGImageReader.java:78)
at com.sun.media.imageioimpl.plugins.clib.CLibImageReader.getimage(CLibImageReader.java:497)
at com.sun.media.imageioimpl.plugins.png.CLibPNGImageReader.getimageTypes(CLibPNGImageReader.java:117)
at javax.imageio.ImageReader.getRawImageType(ImageReader.java:681)
at com.sun.media.imageioimpl.plugins.clib.CLibImageReader.read(CLibImageReader.java:571)
at javax.imageio.ImageIO.read(ImageIO.java:1448)
at javax.imageio.ImageIO.read(ImageIO.java:1352)
at com.media.entra.publication.image.PlatformImageUrlHandler.getimageCreationDescriptor(PlatformImageUrlHandler.java:272)
at com.media.entra.publication.image.PlatformImageUrlHandler.parseImageUrl(PlatformImageUrlHandler.java:208)
at de.think.image.ImageProcessor.dobefore(ImageProcessor.java:80)
at com.scened.presentation.servlet.ProcessorFilter.doFilterImpl(ProcessorFilter.java:74)
at com.twelvemonkeys.servlet.GenericFilter.doFilter(GenericFilter.java:206)
at com.scened.presentation.servlet.LooseFilterChain$Chain.doFilter(LooseFilterChain.java:153)
at com.scened.presentation.servlet.ProcessorFilter.doFilterImpl(ProcessorFilter.java:76)
at com.twelvemonkeys.servlet.GenericFilter.doFilter(GenericFilter.java:206)
at com.scened.presentation.servlet.LooseFilterChain$Chain.doFilter(LooseFilterChain.java:153)
at com.scened.presentation.servlet.ProcessorFilter.doFilterImpl(ProcessorFilter.java:76)
at com.twelvemonkeys.servlet.GenericFilter.doFilter(GenericFilter.java:206)
at com.scened.presentation.servlet.LooseFilterChain$Chain.doFilter(LooseFilterChain.java:153)
at com.scened.presentation.servlet.LooseFilterChain.filter(LooseFilterChain.java:69)
at com.scened.presentation.servlet.CompositeFilter.doFilterImpl(CompositeFilter.java:36)
at com.twelvemonkeys.servlet.GenericFilter.doFilter(GenericFilter.java:206)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
at com.scened.presentation.servlet.BootstrapFilter.doFilterImpl(BootstrapFilter.java:81)
at com.twelvemonkeys.servlet.GenericFilter.doFilter(GenericFilter.java:206)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:212)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:141)
at com.googlecode.psiprobe.Tomcat80AgentValve.invoke(Tomcat80AgentValve.java:41)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:522)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1095)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:672)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1502)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1458)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.NoClassDefFoundError: com/sun/medialib/codec/png/Decoder
at com.sun.media.imageioimpl.plugins.png.CLibPNGImageReader.decode(CLibPNGImageReader.java:75)
... 44 more
问题似乎出在此CLibPNGImageReader.java文件中,该文件源自jai-imageio-core。我已经检查了我的lib文件夹,看来我有这个JAR文件(jai_imageio-1.1.jar以及jai_core-1.1.3.jar和jai_codec-1.1.3.jar)。 我必须指出,我不直接导入jai包,它们可能是javax.imageio.ImageIO的依赖项。
有没有找到导致此问题的原因的方法?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)