日期:2014-05-17  浏览次数:20773 次

写个上传图片的servlet出现以下错误是怎么回事?
写了一个上传图片的servlet,在自己的机器上运行正常,但在服务器上出现如下错误,如何解决?
HTTP Status 500 - Servlet execution threw an exception

--------------------------------------------------------------------------------

type Exception report

message Servlet execution threw an exception

description The server encountered an internal error that prevented it from fulfilling this request.

exception 

javax.servlet.ServletException: Servlet execution threw an exception


root cause 

java.lang.NoClassDefFoundError: Could not initialize class sun.java2d.Disposer
javax.imageio.stream.FileImageInputStream.<init>(FileImageInputStream.java:82)
javax.imageio.stream.FileImageInputStream.<init>(FileImageInputStream.java:57)
com.sun.imageio.spi.FileImageInputStreamSpi.createInputStreamInstance(FileImageInputStreamSpi.java:37)
javax.imageio.ImageIO.createImageInputStream(ImageIO.java:331)
javax.imageio.ImageIO.read(ImageIO.java:1278)
servlet.UploadServlet.doPost(UploadServlet.java:148)
javax.servlet.http.HttpServlet.service(HttpServlet.java:643)
javax.servlet.http.HttpServlet.service(HttpServlet.java:723)


note The full stack trace of the root cause is available in the Apache Tomcat/6.0.37 logs.


--------------------------------------------------------------------------------

Apache Tomcat/6.0.37

------解决方案--------------------
少了sun.java2d.Disposer类吧,你看看这个类属于哪个jar包再看jar包有没有导入咯
------解决方案--------------------
这是网上找的,好像和你这问题差不多。

这个错误是由于新版的Swing大量的使用了微软的DirectDraw的技术来提高画图的性能,而可能你的显
卡在这时候会跟你闹点情绪或者显卡本身并不支持这样的一个技术。难道就没有办法了嘛?要解决这
个问题也非常简单,我们可以屏蔽掉DirectDraw,不让Swing使用该技术就可以了。在运行这些代码时
给虚拟机指定参数-Dsun.java2d.noddraw即可。
 
我就结合这样的解释,在Tomcat中加了一个虚拟机参数-Dsun.java2d.noddraw=true,问题就解决了,不再出现那样的异常错误了。
------解决方案--------------------
我的是debian系统在/etc/init.d/tomcat6可以设置,其他的系统我不知道在哪设置。

你去查查tomcat设置jvm参数