Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/378.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 下载servlet';s doGet()抛出NullPointerException_Java_Servlets_Java Ee 6 - Fatal编程技术网

Java 下载servlet';s doGet()抛出NullPointerException

Java 下载servlet';s doGet()抛出NullPointerException,java,servlets,java-ee-6,Java,Servlets,Java Ee 6,我正在开发一个简单的web应用程序,在该应用程序中,客户端应该能够通过单击HTML页面上的超链接下载pdf文件。我正在使用MVC模式。下面是我的Servlet代码: protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("application/pdf");

我正在开发一个简单的web应用程序,在该应用程序中,客户端应该能够通过单击HTML页面上的超链接下载pdf文件。我正在使用MVC模式。下面是我的Servlet代码:

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
    response.setContentType("application/pdf");
    ServletContext ctx = getServletContext();
    InputStream is = ctx.getResourceAsStream("/abc.pdf");

    int read = 0;
    byte [] bytes = new byte[1024];

    OutputStream os = response.getOutputStream();
    while((read = is.read(bytes)) != -1)
    {
        os.write(bytes, 0, read);
    }
    os.flush();
    os.close();
}
我正在使用Apache Tomcat 6.0

下面是我得到的错误:

SEVERE: Servlet.service() for servlet download threw exception
java.lang.NullPointerException
    at BookDownloaderServlet.doGet(BookDownloaderServlet.java:41)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
abc.pdf正确放置在应用程序上下文下。仍然无法找到此异常的原因。 请帮忙。
提前感谢

很可能这是您的问题:

InputStream is = ctx.getResourceAsStream("/abc.pdf");
is
被分配给
null
。它在这里抛出一个异常:

is.read(bytes)

看起来类路径的根目录中不存在
abc.pdf
文件。

尝试更改
InputStream is=ctx.getResourceAsStream(“/abc.pdf”)
to
InputStream is=ctx.getResourceAsStream(“abc.pdf”)


删除
/

如果您能告诉我们您的代码片段中哪一行是41,以准确定位NPE出现的位置,这会有所帮助。将abc.pdf放在WebContent中解决了我的问题。我正在使用Eclipse Indigo,因此之前我将abc.pdf完全放在我的项目名称下……我认为没有必要保留该文件classpath..谢谢你的提示