2 votes

ImageIO NullPointerException sur le serveur

Je reçois une NullPointerException lorsque je lance mon Servlet Java.

Voici mon code:

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>");

Voici l'erreur que je reçois de Tomcat:

description Le serveur a rencontré une erreur interne () l'empêchant de répondre à cette demande.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)

4voto

haraldK Points 5751

Il se pourrait que "C:\" n'existe pas sur votre serveur, ou qu'il ne soit pas accessible ou inscriptible à partir du serveur web.

Ou, il se pourrait que le format que vous voulez soit vraiment "jpeg" et non "jpg".

Les autres paramètres envoyés à ImageIO.write semblent corrects.

0voto

Adam Gent Points 15055

Il semble que c'est un bug dans JDK7 ne vérifiant pas si le flux est nul. Il est probable que cette cause soit qu'il n'a pas trouvé un SPI approprié pour ce format d'image ou que vous manquez quelques jars.

Peu importe que le format (jpg) soit (in)correct ou que les jars soient manquants, cela ne devrait pas entraîner une NPE donc vous devriez signaler ceci comme un bug (poignée de porte ... qui a senti l'odeur l'a diffusée :) ).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X