2

NullPointerException当我运行我的 Java Servlet 时,我得到了一个。

这是我的代码:

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)
4

2 回答 2

4

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

或者,您想要的格式可能是真的"jpeg"而不是"jpg".

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

于 2013-06-11T13:36:10.283 回答
0

看起来它是 JDK7 中的一个错误,没有检查流是否为 null。很可能是因为它没有为该图像格式找到合适的 SPI,或者您缺少一些 jar。

无论格式 ( jpg) 是(不)正确还是缺少 jar,它都不应该抛出 NPE ,所以你应该把它作为一个 bug 归档(门把手......谁闻到了它 :))。

于 2013-06-11T14:04:23.503 回答