空指针异常,如何解决

giant7 2014-12-25 07:02:55
环境: Myeclipse2014 , win8.1操作系统, JDK7, tomcat7

运行 top.jsp文件,发生异常,错误信息如下:
org.apache.jasper.JasperException: java.lang.NullPointerException


上次的错误信息也是 Exception(只是指明了错误行在下面红色的代码),这次重启myeclipes后无法重现上次的error报错信息了,只是报错:org.apache.jasper.JasperException: java.lang.NullPointerException。上次报错能定位到 文件 top.jsp的代码,信息是:
<%BasetableFactory bf=BasetableFactory.getInstance();%>
<table id="cpdd" class='box' style='display:none' onMouseOver="popmenu(this)" onMouseOut="popmenu(this)" align="center" >
<%Collection cpdd=bf.ListSsort("");
if((cpdd!=null)&&(cpdd.size()>0))
{ Iterator it=cpdd.iterator();
while(it.hasNext())
{
Ssort s=(Ssort)it.next();
%>


BasetableFactory.java相关代码如下:

public abstract class BasetableFactory {
private static final String classname = "com.dao.DbBasetableFactory";
private static BasetableFactory factory;

public static BasetableFactory getInstance() {
if (factory == null) {
try {
Class c = Class.forName(classname);
factory = (BasetableFactory) c.newInstance();
} catch (ClassNotFoundException ex) {
ex.printStackTrace();
} catch (IllegalAccessException ex1) {
ex1.printStackTrace();
} catch (InstantiationException ex1) {
ex1.printStackTrace();
}
}
return new BasetableFactoryProxy(factory);
}


请各位高手帮忙看看: top.jsp这行代码([color=#FF0000] <%Collection cpdd=bf.ListSsort("");)到底是哪里有问题,如何修改,谢谢?[/color]
...全文
867 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
92浩 2014-12-30
  • 打赏
  • 举报
回复
学习
异常异长 2014-12-29
  • 打赏
  • 举报
回复
BasetableFactory bf=BasetableFactory.getInstance(); 就报错了 com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure 连接数据库有问题
bcsflilong 2014-12-28
  • 打赏
  • 举报
回复
引用 3 楼 stubble 的回复:
你可以加一句调试语句 类似如下 伪代码:
 <%if (bf==null%) %>
alert('null')
用这个方式试试
giant7 2014-12-27
  • 打赏
  • 举报
回复
引用 4 楼 yujinlong0001 的回复:
jsp中使用的类你需要用类的全名。 假设我要用一个Java的方法类Date,它的全名为:java.util.Date 要么你在jsp的开头
<%@ page import="java.util.Date" %>
要么你在用的地方这么写
java.util.Date date=new java.util.Date();
首先在此向大家申明一下: 本人的编译环境是: win8.1 , myeclipse8.6, JDK1.7, tomcat7.0 接着回答yujinlong0001的问题,我已经在jsp文件“top.jsp”中,加入了你说的代码,如下所示: <%@ page contentType="text/html; charset=GBK" %> <%@ page import="java.util.Collection" %> <%@ page import="java.util.Iterator" %> <%@ page import="com.core.BasetableFactory" %> <%@ page import="com.model.*" %> <meta http-equiv="Content-Type" content="text/html; charset=GBK"> <script src="js/onclock.JS"></script> <script language="JavaScript">
giant7 2014-12-27
  • 打赏
  • 举报
回复
引用 3 楼 stubble 的回复:
你可以加一句调试语句 类似如下 伪代码:
 <%if (bf==null%) %>
alert('null')
我加入了如下的测试代码: <%BasetableFactory bf=BasetableFactory.getInstance();%> <!-- This debug code --> <% if(bf==null) out.println("There is a bug???");%> <table id="cpdd" class='box' style='display:none' onMouseOver="popmenu(this)" onMouseOut="popmenu(this)" align="center" > <%Collection cpdd=bf.ListSsort("");if(cpdd!=null&&cpdd.size()>0){ Iterator it=cpdd.iterator(); while(it.hasNext()){ Ssort s=(Ssort)it.next(); %> 但是,调试时候没有“There is a bug” 输出来,应该bf不是个空对象了,调试信息如下: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure Last packet sent to the server was 0 ms ago. at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.lang.reflect.Constructor.newInstance(Constructor.java:525) at com.mysql.jdbc.Util.handleNewInstance(Util.java:406) at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1074) at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2103) at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:718) at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:46) at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.lang.reflect.Constructor.newInstance(Constructor.java:525) at com.mysql.jdbc.Util.handleNewInstance(Util.java:406) at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:302) at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:282) at java.sql.DriverManager.getConnection(DriverManager.java:579) at java.sql.DriverManager.getConnection(DriverManager.java:243) at com.core.Database.getConnection(Database.java:42) at com.dao.Dbssort.Select(Dbssort.java:110) at com.dao.DbBasetableFactory.ListSsort(DbBasetableFactory.java:143) at com.BasetableFactoryProxy.ListSsort(BasetableFactoryProxy.java:105) at org.apache.jsp.top_jsp._jspService(top_jsp.java:109) at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) at javax.servlet.http.HttpServlet.service(HttpServlet.java:727) at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432) at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:395) at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:339) at javax.servlet.http.HttpServlet.service(HttpServlet.java:727) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:503) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:421) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1070) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:611) at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.doRun(AprEndpoint.java:2466) at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:2455) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.lang.Thread.run(Thread.java:722) Caused by: java.net.ConnectException: Connection refused: connect at java.net.DualStackPlainSocketImpl.connect0(Native Method) at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:69) at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:339) at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:200) at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:182) at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:157) at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:391) at java.net.Socket.connect(Socket.java:579) at java.net.Socket.connect(Socket.java:528) at java.net.Socket.<init>(Socket.java:425) at java.net.Socket.<init>(Socket.java:241) at com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:253) at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:280) at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2026) ... 43 more ??: DbConnectionManager.getConnection() ?????????. ????:com.mysql.jdbc.Driver ????:jdbc:mysql://127.0.0.1:3306/db_myEnterprise?user=root&password=111&useUnicode=true null Dbssort.Select(String sql) ??? 27, 2014 5:30:10 ?? org.apache.catalina.core.StandardWrapperValve invoke SEVERE: Servlet.service() for servlet [jsp] in context with path [/14] threw exception [An exception occurred processing JSP page /top.jsp at line 41 38: <% if(bf==null) 39: out.println("There is a bug???");%> 40: <table id="cpdd" class='box' style='display:none' onMouseOver="popmenu(this)" onMouseOut="popmenu(this)" align="center" > 41: <%Collection cpdd=bf.ListSsort("");if(cpdd!=null&&cpdd.size()>0){ Iterator it=cpdd.iterator(); while(it.hasNext()){ Ssort s=(Ssort)it.next(); 42: %> 43: <tr> 44: <td onMouseOver="pu(event)" onMouseOut="po(event)" onClick="javascript:window.location.href='list_softsort.jsp?sid=<%=s.getSid()%>';" style="cursor:hand; color:#000000"><%=s.getName()%></td> Stacktrace:] with root cause java.lang.NullPointerException at com.dao.Dbssort.Select(Dbssort.java:111) at com.dao.DbBasetableFactory.ListSsort(DbBasetableFactory.java:143) at com.BasetableFactoryProxy.ListSsort(BasetableFactoryProxy.java:105) at org.apache.jsp.top_jsp._jspService(top_jsp.java:109) at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) at javax.servlet.http.HttpServlet.service(HttpServlet.java:727) at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432) at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:395) at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:339) at javax.servlet.http.HttpServlet.service(HttpServlet.java:727) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:503) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:421) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1070) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:611) at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.doRun(AprEndpoint.java:2466) at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:2455) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.lang.Thread.run(Thread.java:722) 我把可能的原因用红色的字体在上面标记出来了,我目前只是安装好myeclipse8.6, jdk1.7 和tomcat1.7,没有安装和配置mysql数据库的环境,可能有如下原因: 1 mysql数据库没有安装和配置 2 其他的java文件中的class类有问题 请各位高手,帮忙看下,该如何解答这个难题??? 谢谢各位!
giant7 2014-12-26
  • 打赏
  • 举报
回复
引用 2 楼 stubble 的回复:
bf.ListSsort("") 这句

如果 bf 不存在或者是个空对象 那 bf.ListSsort("") 就是空指针异常。


我已经定义过来,看我贴上去的代码的第一行




于金龙 2014-12-25
  • 打赏
  • 举报
回复
jsp中使用的类你需要用类的全名。 假设我要用一个Java的方法类Date,它的全名为:java.util.Date 要么你在jsp的开头
<%@ page import="java.util.Date" %>
要么你在用的地方这么写
java.util.Date date=new java.util.Date();
异常异长 2014-12-25
  • 打赏
  • 举报
回复
你可以加一句调试语句 类似如下 伪代码:
 <%if (bf==null%) %>
alert('null')
异常异长 2014-12-25
  • 打赏
  • 举报
回复
bf.ListSsort("") 这句 如果 bf 不存在或者是个空对象 那 bf.ListSsort("") 就是空指针异常。
踏 浪 2014-12-25
  • 打赏
  • 举报
回复
先判断一下bf==null? 把后面代码注释掉先,看看

58,454

社区成员

发帖
与我相关
我的任务
社区描述
Java Eclipse
社区管理员
  • Eclipse
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧