1. 程式人生 > 實用技巧 >Could not initialize class javax.imageio.ImageIO

Could not initialize class javax.imageio.ImageIO

背景

springmvc應用最近從windows遷移到ubuntu18.04,前端驗證碼無法載入,後來看控制檯報以下錯誤

2020-08-06 15:49:49,983 ERROR [500.jsp] - Could not initialize class javax.imageio.ImageIO
java.lang.NoClassDefFoundError: Could not initialize class javax.imageio.ImageIO
        at com.google.code.kaptcha.servlet.KaptchaServlet.init(KaptchaServlet.java:
50) at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1241) at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1154) at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:827) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:
135) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:504) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:142) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:
79) at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:610) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:534) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1081) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:658) at org.apache.coyote.http11.Http11NioProtocol$Http11ConnectionHandler.process(Http11NioProtocol.java:222) at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1566) at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1523) 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)

前端現象:

這個出錯原因比較簡單,因為linux是非圖形介面啟動,沒載入相關圖形函式庫,繪製驗證碼的過程中報錯了,最早從事java工作的時候遇到過,那個部落格(百度空間)無效了。

再次記錄一下。

解決方法

#開啟檔案,新增JVM引數
vim apache-tomcat-8.0.11/bin/catalina.sh
#新增
JAVA_OPTS="-Djava.awt.headless=true -Dawt.toolkit=sun.awt.HToolkit"

如圖

重啟tomcat後如下