我用eclipse开发jsp+struts 1.2+Access数据库给公司做了一个小网站,在我本机用tomcat测试时一切都正常,现在发布到服务器上后就出现错误java.lang.NullPointerException,这个错误是在我在连接数据库类中出现的,可是我在单机时就没有错误,下面是我的连接类代码:public  Connection conn;
private Statement stat;
private ResultSet rs;
private String jiankong;
private String path;
public DataLianjie(){
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); //载入驱动程序类别
path=URLDecoder.decode(this.getClass().getResource("/").getPath()+"STdata.mdb","gb2312"); 
             path=path.substring(1);System.out.println(path);//去掉左边的"/"
String url="jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ="+path;
conn = DriverManager.getConnection(url);
stat=conn.createStatement();
System.out.println("数据库连接成功");
jiankong="cg";
}catch (Exception e) {
System.out.println(e);
jiankong="shibai"+e.toString()+"数据库地址:"+path;
}
}
问题1.现在我知道该怎么来修正这个问题?
    2.用access数据库时,服务器上是不是一定要安装office?
   3.本人第一次发布jsp网站,eclipse在制作时项目文件夹下哪些应该发布,还是该如何发布,请知道的详细讲一下,谢谢了!

解决方案 »

  1.   

    服务器上肯定是要装 office 你可以只选 access, 否则没办法连到数据库,我估计 nullException 是这个原因造成的,哪些要发布到文件夹下,你最好看下基础的 web 程序开发,一般 webModule 下面的东西要拷到 tomcat的 webapps 目录下,当然,WEB-INF/classes 里有你已经编译好的 classes 文件
      

  2.   

    1,错误java.lang.NullPointerException不一定是出现在连接类中。
    2,不需要装OFFICE
      

  3.   

    1.首先需不需要装office来支持access数据库?
    2.错误肯定是出现在连接数据这个类中,我不知道是不是我获取数据库地址那条写的有问题,反正我在我的eclipse中没有报任何的错误,现在主要就是因为,上传到服务器后我无法跟踪,到底问题出现在哪行?
    3.我更新了WEB-INF/classes 中的class类包,但是现在服务器上调用的还是昨天我更新的类,难道不能即使响应吗?
      

  4.   

    1:肯定不需要装 office
    2:你没有日志记录么?如 log4j
    3:需要重新启动tomcat,不过我们一般本地调试的时候都会在context里配上reloadable=true,保证tomcat对类变化的快速装载
      

  5.   

    肯定不需要装 office java.lang.NullPointerException 不一定是出现在连接类中  
      

  6.   

    office不用安装的,WINDOWS默认有ACCESS的数据库驱动了。
      

  7.   

    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver").newInstance();
    注意异常处理
      

  8.   

    我觉得是我的代码可能有问提,我把代码贴出来,大家帮我分析下:
    package com.data.lianjie;import java.net.URLDecoder;
    import java.sql.*;import javax.resource.spi.ApplicationServerInternalException;import org.omg.CORBA.portable.ApplicationException;public class DataLianjie {
    public  Connection conn;
    private String name="muweitao";
    private String mima="19860608";
    private Statement stat;
    private ResultSet rs;
    private String jiankong;
    private String path;
    public DataLianjie(){
    try{
    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); //载入驱动程序类别
    path=URLDecoder.decode(this.getClass().getResource("/").getPath()+"STdata.mdb","gb2312");  
    String url="jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ="+path;
    conn = DriverManager.getConnection(url);
    stat=conn.createStatement();
    System.out.println("数据库连接成功");
    jiankong="cg";
    }catch (Exception e) {
    System.out.println(e);
    }
    }
    }
    我是这么做的:输入域名后到index.jsp这个页里直接执行到<jsp:forward page="notice.do"/>到我的notice(action)中,在notice中执行DataLianjie lj=new DataLianjie ();这个DataLianjie 类不是action类,而是一个普通类,用这个类来连接access数据库,在我本机上这么
    做是成功的,但是上传到服务器后就报java.lang.NullPointerException这个错了,我现在不知道该怎么做,应该怎么改呢?很着急啊~~~!!!
      

  9.   

    对了,如果是linux服务器的话路径最前面必须有  "/"
      

  10.   

    对了,如果是linux服务器的话路径最前面必须有  "/"
      

  11.   

    不会是有些包没搞上去吧
    发布么 把webroot下面的所有东西都搞上去了
      

  12.   

    /var/www/virtual/tedast/webapps/ROOT/WEB-INF/classes/STdata.mdb这个是我用的path=URLDecoder.decode(this.getClass().getResource("/").getPath()+"STdata.mdb","gb2312");获得的地址,我把STdata.mdb放到了classes下,在我单机时用没问题,现在到服务器就不行了webroot下的所有东西我都上传了,提交给notice成功了,但是DataLianjie lj=new DataLianjie ();连接数据库时失败了
      

  13.   

    是什么时候出现了错误,是读取数据的时候吗????
    另外你可以手动启动TOMCAT,看看它报什么错误,日志有错误吗????