这是我做的一个bug管理源代码 http://www.tomore.com/1/37104.html我在学校做的这个东西,用的 jbuilder 2005+tomcat4.0+sql2000 在win2000环境下作的,在学校的机子下直接放到comcat下就可以用,可以运行,但在家里的机子直接放进去不能运行,(家里的机子自己配置的,第一次配置,能打开tomcat欢迎页面)。问题是:在tomcat里能访问到第1个jsp页面,跳转到第2个页面时候就连数据库就出问题了。
我猜在学校里tomcat是配好的,在家里有可能配置的不对或配置不相同,就出问题。大哥们,快点帮我下载下来看看阿,解决了马上送分阿。------------------------------------------------------------------------------------------
这是错误提示:type Exception reportmessage description The server encountered an internal error () that prevented it from fulfilling this request.exception javax.servlet.ServletException
org.apache.struts.action.RequestProcessor.processException(RequestProcessor.java:545)
org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:486)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:274)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482)
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:525)
javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
root cause java.lang.NullPointerException
tmp.longinAction.execute(longinAction.java:33)
org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:484)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:274)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482)
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:525)
javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
note The full stack trace of the root cause is available in the Apache Tomcat/5.0.28 logs.
--------------------------------------------------------------------------------Apache Tomcat/5.0.28

解决方案 »

  1.   

    longinAction的代码贴出来看一下!
      

  2.   

    对了,用jbuilder 2005打开,运行也没问题。
      

  3.   

    tmp.longinAction.execute(longinAction.java:33)对 要看看你的loginAction 
      

  4.   

    为什么要看这个,这个不对的话,在学校的机子里就不应该能运行得。
    我觉得是tomcat配置的问题
    -----------------------------------------------------------------------------------
    package tmp;import org.apache.struts.action.ActionMapping;
    import org.apache.struts.action.ActionForm;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import org.apache.struts.action.ActionForward;
    import org.apache.struts.action.Action;
    import tmp.*;
    import javax.servlet.http.HttpSession;
    import gerenxinxi.*;
    import xiangmu.*;
    import yonghu.*;public class longinAction extends Action {
        public ActionForward execute(ActionMapping actionMapping,
                                     ActionForm actionForm,
                                     HttpServletRequest servletRequest,
                                     HttpServletResponse servletResponse)throws Exception {
            //得到登陆用户信息
            longinActionForm f = (longinActionForm) actionForm;
            String name = f.getName();
            String password = f.getPassword();        //转化编码支持中文
            name = new String(name.getBytes("ISO-8859-1"), "gbk");        //得到用户信息存储对象
            HttpSession session = servletRequest.getSession();
            gerenxinxi yonghu1 = (gerenxinxi) session.getAttribute("yonghu1");        //判断用户登陆是否正确
            boolean b = yonghu1.denglupanduan(name, password);        if(b==true)
            {
                 //对登陆用户的个人信息进行存储
                 yonghu1.chushihua();              //判断此用户是否有项目
                 if((yonghu1.getSuochuxiangmu())==null) //无项目的
                 {
                     String xitongquanxian=yonghu1.getXitongquanxian();                 //判断系统权限
                     if(xitongquanxian.equals("普通用户"))
                     {
                         return actionMapping.findForward("gerenxinxi");  //跳转到个人信息页
                     }
                     else if(xitongquanxian.equals("项目管理员")|| xitongquanxian.equals("系统管理员"))
                     {
                         //存储项目状态信息
                         xiangmuzhuangtailiebiao xmzt=new xiangmuzhuangtailiebiao();
                         servletRequest.setAttribute("xmzt",xmzt);                     //存储所有项目的简单信息
                         xiangmuliebiao xl=new xiangmuliebiao();
                         xl.addxiangmu();                     //分页
                         fenye xiangmufenye = new fenye();
                         xl=xiangmufenye.xiangmufenye(xl,"0","12");
                         servletRequest.setAttribute("xiangmufenye",xiangmufenye);                     servletRequest.setAttribute("xiangmuliebiao",xl);                     return actionMapping.findForward("xiangmuliebiao");  //跳转到项目列表页
                     }
                     else
                     {
                         //存储所有用户的简单信息
                         yonghuliebiao yl=new yonghuliebiao();
                         yl.addyonghu();
                         //分页
                         fenye yonghufenye=new fenye();
                         yl=yonghufenye.yonghufenye(yl,"0","12");
                         servletRequest.setAttribute("yonghufenye",yonghufenye);                     servletRequest.setAttribute("yonghuliebiao",yl);
                         return actionMapping.findForward("yonghuliebiao");  //跳转到用户列表页
                     }
                 }
                 else   //有项目
                 {
                     String xiangmuid=yonghu1.getSuochuxiangmu().getXiangmuId();  //用户所处项目
                     String yonghuid=yonghu1.getBenrenxinxi().getYonghuId();      //用户id
                     String quanxianzhi=yonghu1.getSuochujuese();                 //在项目中所处的角色值                 //在项目中所处的角色的相应事务bug列表
                     bugliebiao jsbl=new bugliebiao();
                     jsbl.jueseaddbug(xiangmuid,yonghuid,quanxianzhi,"");
                     servletRequest.setAttribute("jsbl",jsbl);                 //提交页中所需参数:bug状态参数
                     bugzhuangtailiebiao bzl=new bugzhuangtailiebiao();
                     servletRequest.setAttribute("bzl",bzl);                 //判断在项目中的角色值: 1设定为测试人员,2 开发人员,4项目组长
                     if(quanxianzhi.equals("1"))//测试人员
                     {
                         //提交页中所需参数:开发人员列表
                         kaifarenyuanliebiao kl=new kaifarenyuanliebiao(xiangmuid);
                         servletRequest.setAttribute("kl",kl);                     return actionMapping.findForward("ceshirenyuandewodeshiwu");  //跳转到测试人员的我的事物
                     }
                     else if(quanxianzhi.equals("2")) //开发人员
                     {
                         //提交页中所需参数:测试人员列表
                         ceshirenyuanliebiao cl=new ceshirenyuanliebiao(xiangmuid);
                         servletRequest.setAttribute("cl",cl);
                         //分页                     return actionMapping.findForward("kaifarenyuandewodeshiwu");  //跳转到开发人员的我的事物
                     }
                     else //项目经理 权限值4
                     {
                         //提交页中所需参数:开发人员列表
                         kaifarenyuanliebiao kl=new kaifarenyuanliebiao(xiangmuid);
                         servletRequest.setAttribute("kl",kl);
                         //提交页中所需参数:测试人员列表
                         ceshirenyuanliebiao cl=new ceshirenyuanliebiao(xiangmuid);
                         servletRequest.setAttribute("cl",cl);                     return actionMapping.findForward("xiangmuzuzhangdewudeshiwu");    //跳转到项目组长的我的事物
                     }
                 }
            }
            else
            {
                 //提交一个提示信息
                 servletRequest.setAttribute("xinxi","您输入用户名或密码错误!");
                 return actionMapping.findForward("longin");
            }     }
    }
      

  5.   

    gerenxinxi yonghu1 = (gerenxinxi) session.getAttribute("yonghu1");        //判断用户登陆是否正确
            boolean b = yonghu1.denglupanduan(name, password); yonghu1 这个不一定有啊,如果是第一次
     你什么时候
    存到session里面去的
      

  6.   

    请楼主检查是否已加载相应的配置文件及类库包,要不给原文件打包,然后在Tomcat里直接发布,看有没有问题
      

  7.   

    tmp.longinAction.execute 
    这里直接用的一个类连接的数据库。 如果连接数据库出问题了,这里也会报异常吧 。
    连接数据库类:
    ------------------------------------------------------------------------------------
    package db;import java.sql.*;//数据库操作类:只实现数据库的连接和关闭
    public class Db{
        public Connection conn=null;
        public Db()
        {    }
        //数据库连接方法
        public void getCon(String dbName){
            try {
                if (conn==null||(conn.isClosed())) {
                    //Oracle驱动注册
                    //Class.forName("oracle.jdbc.driver.OracleDriver");
                    //conn=DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:"+dbName,"scott","tiger");
                    //SqlServer驱动注册
                    Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
                    conn = DriverManager.getConnection(
                            "jdbc:microsoft:sqlserver://localhost:1433;User=sa;Password=sa;databaseName=" +
                            dbName);
                }
            }
            catch (Exception e) {
                System.out.println("连接不成功!\n" + e.getMessage());
            }
        }
        //数据库的关闭方法
        public void closeConnection(){
            try {
                if (conn != null && (!conn.isClosed()))
                    conn.close();
            }
            catch (Exception e) {
                System.out.println("关闭操作不成功!\n" + e.getMessage());
            }
        }
    /*    static public void main(String args[])
        {
            Db d=new Db();
            d.getCon("pubs");
            System.out.println("adf");
            d.closeConnection();
        }*/
    }
      

  8.   

    用笨办法,在longinAction中每隔一行粘贴一句System.out.println(行号).
    看到底哪一行报了这个nullpointerException
      

  9.   

    其实对Java而言,配置文件就能整死一群人,呵呵,,还有就是那个鬼版本问题...
      

  10.   

    其实 ,在jbuilder 2005中运行没有错误。
    只是,编译好后,我把网站文件夹拿出来放到新装的tomcat中时就不能访问了(第一个页可以访问,第2个页连数据库了就出问题了)。
    这个项目是用的 struts框架。
      

  11.   

    呵呵,同意yeno的说法,唉,小弟我真的很着急啊,
    拿位大哥有时间的话,下载一下,配置一下看看怎么配。可以的话,我在别的帖子里在给大哥加分也可以阿。
    小弟现在头痛啊。
      

  12.   

    你33行有空指针异常,所以要看你那个action的代码啊!!
       靠我手数出来的33行是那个session里get出来的对象是个null值
      我觉得配置一点都不难!自己好好学,其实很简单!你检查一下你的那个
    gerenxinxi yonghu1 = (gerenxinxi) session.getAttribute("yonghu1");
    boolean b = yonghu1.denglupanduan(name, password);
    看看,yonghu1这个对象是不是null!
      

  13.   

    楼上的问题就是执行Servlet的时候报错,在Struts里表现出来的是Action, 按楼主所说的我想问几个问题请贴出你的数据库连接代码,以确定楼主是用连接池,JDBC,还是Hibernate连的数据库如果是连接池,就要着重查看连接池的配置了,我这里有一篇专门讲SQL Server数据库连接的文章,希望可以帮上楼主的小忙!http://blog.csdn.net/yeno/archive/2006/01/02/568924.aspx其它的相关配置请参考我的Blog
      

  14.   

    因为是刚学所以用的是最简单的 jdbc
    感谢yeno,我要好好学习一下你的帖子。
    -------------------------------------------------------
        //数据库连接方法
        public void getCon(String dbName){
            try {
                if (conn==null||(conn.isClosed())) {
                    //Oracle驱动注册
                    //Class.forName("oracle.jdbc.driver.OracleDriver");
                    //conn=DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:"+dbName,"scott","tiger");
                    //SqlServer驱动注册
                    Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
                    conn = DriverManager.getConnection(
                            "jdbc:microsoft:sqlserver://localhost:1433;User=sa;Password=sa;databaseName=" +
                            dbName);
                }
            }
      

  15.   

    根据你粘贴的代码,你的null指针异常出现是这一行:
            boolean b = yonghu1.denglupanduan(name, password);
    那么可能是yonghu1报空指针,也可能是执行denglupanduan报空指针.如果denglupanduan里面有数据库操作,那么可能是数据库配置问题.但是如果project是直接放到tomcat的webapps下面,应该不需要配置什么.
    在去连接的bean里面,写一个main()方法确定你的数据库连接是否能正确取到,是否能正确查询
      

  16.   

    我试了好多次,发现在Tomcat4.1里没有错,但是在Tomcat5.X里有问题。
    请问,应该怎么配置一下?
      

  17.   

    给这一句改一下试试看
    conn = DriverManager.getConnection(
                            "jdbc:microsoft:sqlserver://localhost:1433;User=sa;Password=sa;databaseName=" + dbName);改成如下的形式
    String url = "jdbc:microsoft:sqlserver://localhost:1433;databaseName="+dbName;
    String uid = "sa";
    String pwd = "sa";
    conn = DriverManager.getConnection(url,uid,pwd);
      

  18.   

    你在tomcat5里面测试一下取conn的bean,你看conn能取到么?
      

  19.   

    晕啊,现在我们公司让我做.net呢。
    问题先放一下吧。
      

  20.   

    问题没解决,现在没时间弄,先结了帖吧。
    这里十分感谢 yeno(人在广州) 等回帖的兄弟。