生成验证码时,验证码图片不显示,错误信息如下,javax.imageio.IIOException: Can‘t create output stream! javax.imageio.IIOExce


登录验证时,验证码不显示,解决办法如下:

今天写了一个简单的demo,测试使用验证码登录验证,遇到了一个问题,验证码不显示,浏览器显示页面如下(简单测试,页面就随便写了一个)

浏览器显示界面如下(验证码无法显示):

 报错信息如下:

错误日志1:

 错误日志2:

 错误日志3:

错误总结下来大概就是下面三个:

  • Can't create output stream!(没有办法创建输出流)
  • Can't create cache file!(没有办法创建缓冲文件)
  • D:\Program Files\Apache\apache-tomcat-8.5.27\temp\imageio5481273428871630221.tmp(没有办法在D:\Program Files\Apache\apache-tomcat-8.5.27\temp文件夹下面生成imageio5481273428871630221.tmp)


一般碰到 Can't create output stream!的问题,看看下面两种情况:

(1)查看我们的tomcat下面没有temp文件夹,因为ImageIO默认使用的缓存目录是tomcat文件夹下面的temp文件夹。

(2)如果有这个文件夹还是无法生成缓存文件,那么大概率可能是没有没有管理员权限造成的无法缓存,D盘需要管理员权限才能创建文件夹。


对应的解决方案:

(1)手动在tomcat文件夹下创建一个temp文件夹,然后重启Tomcat服务器(默认缓存就存放在temp文件夹下下,没有固然会报错)

  (2) 在生成验证码的代码中加入如下代码:ImageIO.setUseCache(false);//不使用文件目录缓存,使用内存缓存

注意:ImageIO默认就是使用的缓存目录,所以这里需要使用上面代码来更改缓存策略

我的代码如图:



更改后的结果如下:

希望对你有帮助,加油骚年!