Java 服务器上的ImageIO NullPointerException

Java 服务器上的ImageIO NullPointerException,java,tomcat,servlets,nullpointerexception,javax.imageio,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.createGra

当我运行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>");
可能是服务器上不存在
“C:\”
,或者无法从web服务器访问或写入

或者,可能是您想要的格式实际上是
“jpeg”
,而不是
“jpg”

发送到
ImageIO.write
的其他参数看起来很好。

可能是服务器上不存在
“C:\”
,或者无法从web服务器访问或写入

或者,可能是您想要的格式实际上是
“jpeg”
,而不是
“jpg”


发送到
ImageIO.write
的其他参数看起来很好。

这似乎是JDK7中的一个错误,没有检查。很可能是它的原因 它没有找到一个合适的或你丢失了一些罐子


无论格式(
jpg
)是正确的还是丢失的罐子,它都不应该抛出NPE(门把手…任何嗅到它的人将其删除:)。

它看起来像是JDK7中的一个bug,没有检查。很可能是它的原因 它没有找到一个合适的或你丢失了一些罐子


无论格式(
jpg
)是正确的还是丢失的罐子,它都不应该抛出NPE(门把手…任何嗅到它的人,都可以使用它:))。

您确定要读取的test.jpg在服务器上下文中是可访问的/存在的吗?您确定要读取的test.jpg在服务器上下文中是可访问的/存在的吗?C:\确实存在并且是可访问的我知道这一点,因为我有一个单独的servlet访问文件“C:\sarts.jpg”它是有效的fine@LwaziPrusent读和写不是同一件事,可能需要不同的访问权限。
java.io.File
canRead()
canWrite()
canExecute()
方法,这些方法应该能够告诉你。谢谢你,我更改了文件位置,现在它工作正常。我觉得有点傻,我应该先试试看。@Lwaziprussent好吧,来自ImageIO的异常消息并没有真正的帮助,所以你总是可以责怪Oracle…-)C:\确实存在并且可以访问,我知道这一点,因为我有一个单独的servlet,它可以访问文件“C:\ sarth.jpg”,并且可以工作fine@LwaziPrusent读取和写入不同的内容,可能需要不同的访问权限。
java.io.File
具有
canRead()
canWrite()
canExecute()
应该能够告诉您的方法。谢谢,我更改了文件位置,现在可以正常工作了。我觉得有点傻,我应该先试试看。@Lwaziprussent好吧,来自ImageIO的异常消息并没有真正的帮助,所以你总是可以责怪Oracle…-)谢谢,我会这么做的,所以你认为如果我安装一个新的JDKI,它会工作吗?当然,我认为这也是一个bug。使用什么JRE版本?使用不同的JDK可能无法修复它,但最好能显示出真正的问题。谢谢,我会这么做,所以你认为如果我安装一个新的JDK它会工作吗?当然,我认为这也是一个bug。使用什么JRE版本?使用不同的JDK可能无法解决问题,但最好能说明真正的问题。
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)