java.io.IOException: reading encoded JPEG Stream (在线等)

chjx1982 2008-10-07 04:37:38
这是我在TOMCAT日志里找到的错误,是验证码用的。
这是它的错误代码

java.io.IOException: reading encoded JPEG Stream
at sun.awt.image.codec.JPEGImageEncoderImpl.writeJPEGStream(Native Method)
at sun.awt.image.codec.JPEGImageEncoderImpl.encode(JPEGImageEncoderImpl.java:472)
at sun.awt.image.codec.JPEGImageEncoderImpl.encode(JPEGImageEncoderImpl.java:228)
at org.apache.jsp.pages.random_jsp._jspService(random_jsp.java:107)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:237)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:214)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:198)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:152)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:118)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929)
at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:705)
at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683)
at java.lang.Thread.run(Thread.java:595)


...全文
1410 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
killerlv 2011-05-09
  • 打赏
  • 举报
回复
我用的JBOSS也是报这个错误!!
chjx1982 2008-10-08
  • 打赏
  • 举报
回复
我也能产生的,但是TOMCAT日志报了这个错误,不知道为什么????
eft21 2008-10-07
  • 打赏
  • 举报
回复
我运行了一遍你给的代码,可以正常的运行啊 生成验证码
没发现错误
lz是不是因为开发工具或服务器的原因或是由于过滤器的原因产生的
chjx1982 2008-10-07
  • 打赏
  • 举报
回复
是包的错误吗?还是哪里引用错误了?
阿甘1976 2008-10-07
  • 打赏
  • 举报
回复
你用了另外的包,我用JDK自身的类写的

<%@ page contentType="image/jpeg" pageEncoding="GBK"%>
<%@ page import="java.awt.*" %>
<%@ page import="java.awt.image.*" %>
<%@ page import="java.util.*"%>
<%@ page import="javax.imageio.*" %>

<title >在JSP中动态生成图像 </title >
<%
//产生随机验证数值
String chose="0123456789";
//abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
char display[]={'0',' ','0',' ','0',' ','0'},ran[]={'0','0','0','0'},temp;

Random rand=new Random();

for(int i=0;i<4;i++)
{

temp=chose.charAt(rand.nextInt(chose.length()));

display[i*2]=temp;

ran[i]=temp;
}

String random=String.valueOf(display);

session.setAttribute("random",String.valueOf(ran));
%>
<%!
//产生随机颜色函数
Color getRandColor(int fc,int bc){
Random random = new Random();
if(fc >255) fc=255;
if(bc >255) bc=255;

int red=fc+random.nextInt(bc-fc); //红
int green=fc+random.nextInt(bc-fc); //绿
int blue=fc+random.nextInt(bc-fc); //蓝
return new Color(red,green,blue);
}
%>

<%
//设置页面不缓存
response.setHeader("Pragma","No-cache");
response.setHeader("Cache-Control","no-cache");
response.setDateHeader("Expires", 0);

//在内存中创建图象
int width=60, height=30;
BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);

//获取图形上下文
Graphics g = image.getGraphics();

//设定背景色
g.setColor(getRandColor(200,250));
g.fillRect(0, 0, width, height);

//设定字体
g.setFont(new Font("Times New Roman",Font.PLAIN,18));

//画边框
g.setColor(new Color(0,0,0));
g.drawRect(0,0,width-1,height-1);

//输出文字
// g.drawString("**************",50,50);
g.drawString(random,5,20);


//释放图形环境
g.dispose();

//输出图象到页面
ImageIO.write(image, "JPEG", response.getOutputStream());

%>
chjx1982 2008-10-07
  • 打赏
  • 举报
回复
我知道,对应的就是那行错误。
非典型射手 2008-10-07
  • 打赏
  • 举报
回复
异常中报的错是107行指的是JSP翻译成JAVA文件后的107,并不一定是JSP中的107行
chjx1982 2008-10-07
  • 打赏
  • 举报
回复
chjx1982 2008-10-07
  • 打赏
  • 举报
回复
怎么出不来颜色,那行就是107行,报的错误。
chjx1982 2008-10-07
  • 打赏
  • 举报
回复
这是它的代码

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<%@ page autoFlush="false" import="java.util.*,java.awt.*,java.awt.image.*,com.sun.image.codec.jpeg.*,java.util.*" %>

<%
//set Chinese Char
//Cody by JarryLi@gmail.com;
//homepage:jiarry.126.com
request.setCharacterEncoding("GBK");
response.setCharacterEncoding("GBK");
response.setContentType("text/html; charset=GBK");
%>
<%
String chose="0123456789";
//abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
char display[]={'0',' ','0',' ','0',' ','0'},ran[]={'0','0','0','0'},temp;

Random rand=new Random();

for(int i=0;i<4;i++)
{

temp=chose.charAt(rand.nextInt(chose.length()));

display[i*2]=temp;

ran[i]=temp;
}

String random=String.valueOf(display);

session.setAttribute("random",String.valueOf(ran));
%>
<%

out.clear();

response.setContentType("image/jpeg");
response.addHeader("pragma","NO-cache");
response.addHeader("Cache-Control","no-cache");
response.addDateHeader("Expries",0);
int width=80, height=30;
BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
Graphics g = image.getGraphics();
//以下填充背景颜色
Color c = new Color(Integer.parseInt("000000",16));
g.setColor(c);
g.fillRect(0, 0, width, height);
//设置字体颜色
g.setColor(Color.WHITE);
Font font=new Font("Arial",Font.PLAIN,20);
g.setFont(font);
// g.drawString(random,5,14);
g.drawString(random,5,20);
g.dispose();
ServletOutputStream outStream = response.getOutputStream();
JPEGImageEncoder encoder =JPEGCodec.createJPEGEncoder(outStream);
encoder.encode(image);

outStream.close();
out.clear();
out = pageContext.pushBody();
%>

81,091

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧