Java 下载servlet';s doGet()抛出NullPointerException
我正在开发一个简单的web应用程序,在该应用程序中,客户端应该能够通过单击HTML页面上的超链接下载pdf文件。我正在使用MVC模式。下面是我的Servlet代码: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");
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”)
toInputStream is=ctx.getResourceAsStream(“abc.pdf”)代码>
删除/
如果您能告诉我们您的代码片段中哪一行是41,以准确定位NPE出现的位置,这会有所帮助。将abc.pdf放在WebContent中解决了我的问题。我正在使用Eclipse Indigo,因此之前我将abc.pdf完全放在我的项目名称下……我认为没有必要保留该文件classpath..谢谢你的提示