700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > java.lang.ClassNotFoundException: com.sun.image.codec.jpeg.JPEGCodec

java.lang.ClassNotFoundException: com.sun.image.codec.jpeg.JPEGCodec

时间:2023-09-23 06:10:41

相关推荐

java.lang.ClassNotFoundException: com.sun.image.codec.jpeg.JPEGCodec

今天迁移老项目到linux服务器,jdk8 ,tomcat8.5遇到这个问题。

java.lang.ClassNotFoundException: com.sun.image.codec.jpeg.JPEGCodec

查询资料得知,原来openjdk从jdk7开始去掉了这个类。

ICEpdfPDF-332JPEGCodec has been removed from JDK 1.7

引用:/browse/PDF-332

处理:

更换为oracle jdk8,解决问题。

这两天都快被这个错误整疯了!!!

最近在写java项目的时候需要用到

[java]view plaincopy importcom.sun.image.codec.jpeg.JPEGCodec;importcom.sun.image.codec.jpeg.JPEGImageEncoder;

这两个类来把图片写入磁盘。注意:这两个类可是处在系统自带的jre里的rt.jar包里

[java]view plaincopy FileOutputStreamout=newFileOutputStream(targetFile);JPEGImageEncoderencoder=JPEGCodec.createJPEGEncoder(out);encoder.encode(mBufferedImage);

本来在本地Eclipse测试的好好的,但是部署到Linux服务器的时候就出错了

[java]view plaincopy java.lang.ClassNotFoundException:com.sun.image.codec.jpeg.JPEGCodecatorg.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1714)atorg.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1559)atcom.vxpai.wechat.util.ImgUtil.imageScale(ImgUtil.java:72)atcom.vxpai.wechat.webcontroller.UploadController.ss(UploadController.java:68)atsun.reflect.NativeMethodAccessorImpl.invoke0(NativeMethod)atsun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)atsun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)atjava.lang.reflect.Method.invoke(Method.java:606)atorg.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:175)atorg.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:446)atorg.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:434)atorg.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:938)atorg.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:870)atorg.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:961)atorg.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:863)atjavax.servlet.http.HttpServlet.service(HttpServlet.java:647)atorg.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:837)atjavax.servlet.http.HttpServlet.service(HttpServlet.java:728)atorg.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)atorg.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)atorg.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)atorg.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)atorg.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)atorg.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)atorg.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)atorg.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)atorg.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)atorg.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)atorg.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)atorg.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:931)atorg.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)atorg.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)atorg.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1004)atorg.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)atorg.apache..JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312)atjava.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)atjava.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)atjava.lang.Thread.run(Thread.java:745)

刚开始的时候以为是没有引入rt.jar,将其用maven(我的项目是基于maven建立的)引入,部署上去之后居然还是报错:

[java]view plaincopy java.lang.UnsatisfiedLinkError:nojpeginjava.library.pathatjava.lang.ClassLoader.loadLibrary(ClassLoader.java:1886)atjava.lang.Runtime.loadLibrary0(Runtime.java:849)atjava.lang.System.loadLibrary(System.java:1088)atsun.security.action.LoadLibraryAction.run(LoadLibraryAction.java:67)atsun.security.action.LoadLibraryAction.run(LoadLibraryAction.java:47)atjava.security.AccessController.doPrivileged(NativeMethod)atsun.awt.image.codec.JPEGImageEncoderImpl.<clinit>(JPEGImageEncoderImpl.java:73)atcom.sun.image.codec.jpeg.JPEGCodec.createJPEGEncoder(JPEGCodec.java:68)atcom.vxpai.wechat.util.ImgUtil.imageScale(ImgUtil.java:72)atcom.vxpai.wechat.webcontroller.UploadController.ss(UploadController.java:68)atsun.reflect.NativeMethodAccessorImpl.invoke0(NativeMethod)atsun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)atsun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)atjava.lang.reflect.Method.invoke(Method.java:606)atorg.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:175)atorg.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:446)atorg.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:434)atorg.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:938)atorg.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:870)atorg.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:961)atorg.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:863)atjavax.servlet.http.HttpServlet.service(HttpServlet.java:647)atorg.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:837)atjavax.servlet.http.HttpServlet.service(HttpServlet.java:728)atorg.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)atorg.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)atorg.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)atorg.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)atorg.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)atorg.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)atorg.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)atorg.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)atorg.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)atorg.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)atorg.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)atorg.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:931)atorg.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)atorg.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)atorg.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1004)atorg.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)atorg.apache..JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312)atjava.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)atjava.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)

最后,果断弃百度google了一下,终于找到了产生java.lang.ClassNotFoundException的原因:The basic explanation is that com.sun.image.codec.jpeg.JPEGCodec and related libraries have long been marked as depreciated, and you should use theImageIOlibrary instead. 参考地址:/

原来,在jdk最新的版本中,这jpeg包下的类已经不推荐,所以,果断用ImageIO替换这两个类

[java]view plaincopy FileOutputStreamout=newFileOutputStream(targetFile);ImageIO.write(mBufferedImage,type,out);

修改完成,部署,终于OK啦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。