服务器上的ImageIO NullPointerException

时间:2013-06-11 13:28:41

标签: java tomcat servlets nullpointerexception javax.imageio

运行Java Servlet时,我得到NullPointerException

这是我的代码:

out.println("<image>");
int BI_WIDTH = 1000;
int BI_HEIGHT = 1400;
BufferedImage bImage = new BufferedImage(BI_WIDTH, BI_HEIGHT,BufferedImage.TYPE_INT_RGB);

Graphics2D g2d = bImage.createGraphics();
g2d.setBackground(Color.WHITE);
g2d.clearRect(0, 0, BI_WIDTH, BI_HEIGHT);
g2d.setColor(Color.BLACK);
BasicStroke bs = new BasicStroke(10);
g2d.setStroke(bs);
g2d.drawLine(30, 30, 800, 30);
//out.println("<status ref=\"done\" />");
//out.println("<status ref=\"" + bImage.getWidth() + "x" + bImage.getHeight() + "\" />");
out.println("<status ref=\"" + bImage.getWidth() + "x" + bImage.getHeight() + "\" />");

try {
    ImageIO.write(bImage, "jpg", new File("C:\\test.jpg"));
} catch (IOException e) {
    out.println("<status ref=\"" + e +"\" />");
}
out.println("</image>");

以下是我从Tomcat获得的错误:

description The server encountered an internal error () that prevented it from fulfilling this request.exception
java.lang.NullPointerException
javax.imageio.ImageIO.write(ImageIO.java:1538)
SendBasicReport.doGet(SendBasicReport.java:62)
javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

2 个答案:

答案 0 :(得分:3)

可能是您的服务器上不存在"C:\",或者它无法从Web服务器访问或写入。

或者,您可能希望格式为"jpeg"而非"jpg"

发送给ImageIO.write的其他参数看起来不错。

答案 1 :(得分:0)

看起来它是JDK7中的一个错误,而不是检查stream is null。最有可能的原因 它找不到合适的SPI for that image format或你遗漏的一些罐子。

无论格式(jpg)是否(正确)或丢失的罐子,它都不应该抛出NPE so you should go file this as a bug(门把手......无论是谁闻到它都是它:))。