oracle的包位置错了,一般应该放在 JAVA_HOME/jre/lib/ext里边

解决方案 »

  1.   

    放进去了D:\Program Files\j2re1.4.1\lib\ext,但还是不行!:(
    为什么我使用普通的数据源方式连接数据库,oracle的驱程就可以找到,而换成连接池却不可以了呢?
      

  2.   

    tomcat\common\lib(最佳)tomcat文档说的有
      

  3.   

    可是tomcat\common\lib我早就放进去了,否则连数据源方式的也连不上,所以我才奇怪,为什么换成了连接池,就找不到了呢??
    请高手解惑~~!@@
      

  4.   

    把web-inf\lib下的删掉
    一定要重启 保留tomcat\common\lib下的驱动
      

  5.   

    谢谢 duanyuxy123(这几年) ,我找到问题了,原来是我配连接池的时候JDBC driver class的串中出现了错误,当然在包中就找不到了~!真是不好意思!
      

  6.   

    我把程序移到了JAVA文件中,执行到这句的时候  Context envCtx = (Context)ctx.lookup("java:comp/env");就出现了下面的错误:
    javax.naming.NoInitialContextException: Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file:  java.naming.factory.initial
    请问这是什么意思??
      

  7.   

    Context ctx=new InitialContext();  DataSource ds=(DataSource)ctx.lookup("java:comp/env/数据源名称");
     这样不会出现问题的
      

  8.   

    这么写,在JSP中调用这个类是没有问题,但单独调试这个类,就不行了~!还是上面的问题,感觉javax.naming.factory.initial好像要定义一下,因为Tomcat已经缺省定义了,所以在jsp中定义时没有问题,怎么办?
      

  9.   

    代码如下:
    package struts;import javax.naming.*;
    import javax.sql.*;
    import java.sql.*;
    public class DBTest {

    public static void main(String[] args) {
    DBTest test =new DBTest();
    test.init();
    System.out.println(test.getFoo());
    }

    public void init() {

    try{
    Context ctx = new InitialContext();

    String initial = System.getProperty("javax.naming.factory.initial");

    if(ctx == null ) 
    throw new Exception("Boom - No Context");

    DataSource ds = (DataSource)ctx.lookup("java:comp/env/jdbc/oracle");

    if (ds != null) {
    Connection conn = ds.getConnection();

    if(conn != null) {
    foo = "Got Connection "+conn.toString();
    Statement stmt = conn.createStatement();
    ResultSet rst = stmt.executeQuery("select * from jiveid");
    if(rst.next()) {
    foo=rst.getString(2)+initial+"mmmm";
    bar=rst.getInt(1);
    }
    conn.close();
    }
    }
    }catch(Exception e) {
    e.printStackTrace();
    }
    }

    public String getFoo() { return foo; }
    public int getBar() { return bar;}

             String foo = "";
    int bar = -1;
    }
    一调试就出现上面的错,这样的话在其它类中也无法引用:(
      

  10.   

    String initial = System.getProperty("javax.naming.factory.initial");
    什么意思?
    去掉不行
      

  11.   

    这句话试试javax.naming.factory.initial属性到底是不是空,程序中应该没有这个的,是我为了测试加上的,我现在发现因为类中缺少了这个属性的定义,所以在才不能运行成功~!
       但把这个类文件做成一个bean通过jsp调用就可以了,就是因为tomcat肯定对这个东西做了定义~!所以JSP页才不报错.
       总之在类中使用tomcat数据源,就存在这个问题~!
      

  12.   

    看看下面这个
    http://www.csdn.net/Develop/read_article.asp?id=25942
      

  13.   

    看过了,就是照着这个做的,连接池已经没有问题了,把连接数据库部分写到bean中,在JSP布中调用也没问题,就是加个main函数单独调试bean的时候出现错误~!:(
      

  14.   

    这就对了,连接池的实现是tomcat本身的dbcp,加以个main 就不属于tomcat的了,如果要用的话,可以自己写一个,
    只要是tomcat环境应用程序,你的调用就没有问题
      

  15.   

    自已写一个?我明白了,我在struts中可以使用tomcat的连接池吗?真有点怀疑了~!非常感谢duanyuxy123(这几年)的帮助
      

  16.   

    你没有理解问题的本质(对不起)只要你在tomcat环境下使用,无论struts,webwork,还是其他框架
    都没有关系跟框架无关,只跟运行环境有关