0

我已经为验证码创建了 REST API - 在 Spring 框架中使用 JCaptcha。

当我将战争文件放在 Windows 操作系统环境中的 tomcat7 服务器中时,一切正常。

对于部署,当我在 Ubuntu 14.04 中存在的 tomcat7 Web 服务器中使用相同的 war 文件时,api 突然开始提供 http 500 响应代码,但有以下异常:

org.springframework.web.util.NestedServletException: Handler processing failed; nested exception is java.lang.NoClassDefFoundError: Could not initialize class sun.awt.image.codec.JPEGImageEncoderImpl
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:820)
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:716)
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:647)
org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:552)
javax.servlet.http.HttpServlet.service(HttpServlet.java:620)
javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
com.televital.vitalware.services.CORSFilter.doFilterInternal(CORSFilter.java:29)
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)

我已经为 API 的开发提供了以下链接

https://jcaptcha.atlassian.net/wiki/display/general/JCaptcha+and+the+SpringFramework

请帮助我。它已经花了我 2 天的时间。

4

2 回答 2

0

There are two possibilities.

  • sun.awt.image.codec.* is included in <JDK installation folder>\jre\lib\rt.jar. So check this jar is already existed in your Linux machine or not.
  • The second one is you need to turn on Headless mode in your Linux machine.Before you run tomcat startup script, you need to turn on Headless mode like this

     JAVA_OPTS='-Djava.awt.headless=true'
    
于 2016-12-28T08:51:44.123 回答
0

从堆栈跟踪可以明显看出,在 Ubuntu 上,应用程序无法sun.awt.image.codec.JPEGImageEncoderImpl<JDK installation>\jre\lib\rt.jar.

解决以下错误检查

  • JDK安装正确(如果没有重新安装
  • JAVA_HOME配置正确
  • 如果以上两个是正确的,那么通过指定 使用无头模式-Djava.awt.headless=true
于 2016-12-28T08:53:14.003 回答