尝试使用ImageIO.read读取PNG图像时,在Tomcat 8服务器中获取java.lang.NoClassDefFoundError:com / sun / medialib / codec / png / Decoder

问题描述

在我的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 (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...