oracle JDBC jar导致错误问题!

原来项目中用的数据库连接池是 hibernate自带的dbcp,项目run的还行。

过了一段时间之后想优化一下项目,想使用 spring的数据源部分,把数据库链接放到容器当中建立数据源 

<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
       <property name="jndiName">
           <value>java:comp/env/DS</value>
       </property>
    </bean>

配上之后,系统总是抛出异常:

java.lang.AbstractMethodError: oracle.jdbc.driver.OracleResultSetImpl.getBlob(Ljava/lang/String;)Ljava/sql/Blob;
 at org.apache.commons.dbcp.DelegatingResultSet.getBlob(DelegatingResultSet.java:526)
 at net.sf.hibernate.type.BlobType.get(BlobType.java:32)
 at net.sf.hibernate.type.NullableType.nullSafeGet(NullableType.java:62)
 at net.sf.hibernate.type.NullableType.nullSafeGet(NullableType.java:53)
 at net.sf.hibernate.type.AbstractType.hydrate(AbstractType.java:66)
 at net.sf.hibernate.loader.Loader.hydrate(Loader.java:686)
 at net.sf.hibernate.loader.Loader.loadFromResultSet(Loader.java:627)
 at net.sf.hibernate.loader.Loader.instanceNotYetLoaded(Loader.java:586)
 at net.sf.hibernate.loader.Loader.getRow(Loader.java:501)
 at net.sf.hibernate.loader.Loader.getRowFromResultSet(Loader.java:213)
 at net.sf.hibernate.loader.Loader.doQuery(Loader.java:281)
 at net.sf.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:133)
 at net.sf.hibernate.loader.Loader.doList(Loader.java:1033)
 at net.sf.hibernate.loader.Loader.list(Loader.java:1024)
 at net.sf.hibernate.hql.QueryTranslator.list(QueryTranslator.java:854)
 at net.sf.hibernate.impl.SessionImpl.find(SessionImpl.java:1544)
 at net.sf.hibernate.impl.QueryImpl.list(QueryImpl.java:39)
 at org.springframework.orm.hibernate.HibernateTemplate$19.doInHibernate(HibernateTemplate.java:645)
 at org.springframework.orm.hibernate.HibernateTemplate.execute(HibernateTemplate.java:312)
 at org.springframework.orm.hibernate.HibernateTemplate.find(HibernateTemplate.java:631)
 at org.springframework.orm.hibernate.HibernateTemplate.find(HibernateTemplate.java:610)
。。。。
 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
 at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
 at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
 at java.lang.reflect.Method.invoke(Method.java:585)
 at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:310)
 at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:155)
 at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:122)
 at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:57)
 at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:144)
 at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:174)
 at $Proxy4.userLogin(Unknown Source)
 。。。。。
 at org.springframework.web.struts.DelegatingActionProxy.execute(DelegatingActionProxy.java:105)
 at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:421)
 at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:226)
 at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1164)
 at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:415)
 at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
 at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:237)
 at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
 at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:214)
 at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
 at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
 at org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:198)
 at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:152)
 at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
 at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
 at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137)
 at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
 at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:118)
 at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
 at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
 at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
 at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
 at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
 at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929)
 at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160)
 at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799)
 at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:705)
 at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577)
 at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683)
 at java.lang.Thread.run(Thread.java:595)

2009-06-16 10:24:06 StandardWrapperValve[action]: Servlet.service() for servlet action threw exception
java.lang.AbstractMethodError: oracle.jdbc.driver.OracleResultSetImpl.getBlob(Ljava/lang/String;)Ljava/sql/Blob;
 at org.apache.commons.dbcp.DelegatingResultSet.getBlob(DelegatingResultSet.java:526)
 at net.sf.hibernate.type.BlobType.get(BlobType.java:32)
 at net.sf.hibernate.type.NullableType.nullSafeGet(NullableType.java:62)
 at net.sf.hibernate.type.NullableType.nullSafeGet(NullableType.java:53)
 at net.sf.hibernate.type.AbstractType.hydrate(AbstractType.java:66)
 at net.sf.hibernate.loader.Loader.hydrate(Loader.java:686)
 at net.sf.hibernate.loader.Loader.loadFromResultSet(Loader.java:627)
 at net.sf.hibernate.loader.Loader.instanceNotYetLoaded(Loader.java:586)
 at net.sf.hibernate.loader.Loader.getRow(Loader.java:501)
 at net.sf.hibernate.loader.Loader.getRowFromResultSet(Loader.java:213)
 at net.sf.hibernate.loader.Loader.doQuery(Loader.java:281)
 at net.sf.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:133)
 at net.sf.hibernate.loader.Loader.doList(Loader.java:1033)
 at net.sf.hibernate.loader.Loader.list(Loader.java:1024)
 at net.sf.hibernate.hql.QueryTranslator.list(QueryTranslator.java:854)
 at net.sf.hibernate.impl.SessionImpl.find(SessionImpl.java:1544)
 at net.sf.hibernate.impl.QueryImpl.list(QueryImpl.java:39)
 at org.springframework.orm.hibernate.HibernateTemplate$19.doInHibernate(HibernateTemplate.java:645)
 at org.springframework.orm.hibernate.HibernateTemplate.execute(HibernateTemplate.java:312)
 at org.springframework.orm.hibernate.HibernateTemplate.find(HibernateTemplate.java:631)
 at org.springframework.orm.hibernate.HibernateTemplate.find(HibernateTemplate.java:610)
。。。。。
 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

 

后来终于在网上找到了答案,至于是那位高手,俺忘了,不好意思啊,见谅!:-)

网友高手指出,是由于oracle的jar所导致的问题。经本人比较oracle 9i 的jar如下:

 ————————————————————————————————                            

oracle自带的jar:  classes111.jar      952KB

                          classes12.jar        1.07MB

—————————————————————————————————

从官方下载的jar:  classes12.jar         1.35MB

—————————————————————————————————

 

换完oracle的jar 问题解决。那位高手或网友对这个问题做具体分析了或有啥好的文章、看法,希望留个评论。俺想再深入看看。:-)

                 

 最后,感谢那位不知名的网友!特别是你帮俺把问题解决了,没把你的网址记住,抱歉!

                                                       (浪费了好长时间啊,%>_<%)

 

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 您可以在Oracle官网上下载JDBC驱动jar包。具体步骤如下: 1. 打开Oracle官网(https://www.oracle.com/)。 2. 点击“Downloads”菜单,选择“Database”选项。 3. 在“Oracle Database”页面中,选择您需要的版本和操作系统。 4. 在“Oracle Database Downloads”页面中,选择“JDBC”选项。 5. 在“JDBC Downloads”页面中,选择您需要的版本和操作系统。 6. 点击“Download”按钮,即可下载JDBC驱动jar包。 注意:下载前需要注册Oracle账号。 ### 回答2: Oracle JDBC驱动jar包是用于连接Oracle数据库的必要文件,如果需要使用Java连接Oracle数据库的话,就需要下载并安装这个jar包。以下是Oracle JDBC驱动jar包下载的步骤: 1. 打开Oracle官方网站。 2. 在网站上方的搜索框中输入“JDBC驱动程序下载”。 3. 在搜索结果中,选择与所需Oracle数据库版本对应的驱动程序版本。例如,如果需要连接Oracle 12c数据库,则应选择oracle.jdbc.driver.OracleDriver。 4. 点击下载链接以下载jar文件。一般情况下,将文件保存到本地系统的下载文件夹中。 5. 将jar文件添加到Java应用程序的classpath中。做法是将jar文件复制到应用程序的lib目录中,或在Java应用程序中添加jar文件的引用。 6. 在Java应用程序中使用JDBC驱动程序连接Oracle数据库。首先,在应用程序代码中加载JDBC驱动程序,然后使用编程语言中提供的方法,建立与Oracle数据库的连接。 总之,Oracle JDBC驱动是Java连接Oracle数据库的必备工具,下载方式简单,只需要在Oracle官方网站上找到对应版本的驱动程序,下载后添加到Java应用程序的classpath中即可。 ### 回答3: Oracle JDBC驱动是用于连接Oracle数据库的Java应用程序的核心组件。在使用Java编写Oracle数据库应用程序时,需要将Oracle JDBC驱动程序添加到应用程序的类路径中。此外,Oracle JDBC驱动程序的版本必须与所连接的Oracle数据库版本兼容,以确保正常的通信和数据传输。 以下是Oracle JDBC驱动程序的下载和配置过程: 1. 登录Oracle官方网站(www.oracle.com)并转到“Downloads”页面。 2. 在“Downloads”页面中,从“Database”下拉菜单中选择“Oracle Database”选项,然后选择所需的Oracle数据库版本。 3. 从“Oracle Database Downloads”页面中选择适合您操作系统的软件包。随后会弹出“OTN License Agreement”页面,阅读完“OTN License Agreement”后,勾选“Accept License Agreement”选项,然后单击“Download”按钮。 4. 完成软件包下载后,解压该包并找到其中的“ojdbc.jar”文件。这是Oracle JDBC驱动程序的主要文件。 5. 在Java IDE中打开项目,并将“ojdbc.jar”文件复制到项目的类路径中,或将其添加到操作系统的CLASSPATH环境变量中。这可以确保您的应用程序可以访问Oracle JDBC驱动程序。 6. 在您的Java应用程序代码中,使用以下行来加载Oracle JDBC驱动程序: Class.forName("oracle.jdbc.driver.OracleDriver"); 7. 创建连接时,使用以下语法连接到数据库: Connection connection = DriverManager.getConnection( "jdbc:oracle:thin:@localhost:1521:orcl", "username", "password"); 其中,“jdbc:oracle:thin”是固定的连接字符串,“localhost”是数据库的主机名,“1521”是数据库端口,“orcl”是数据库服务名。最后两个参数是连接用户名和密码,分别对应的是您的数据库的用户名和密码。 以上是Oracle JDBC驱动程序的下载和配置过程。请注意,为了确保您的应用程序能够正常连接到Oracle数据库,您必须选择与您的数据库版本兼容的正确版本的Oracle JDBC驱动程序。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值