Maven-Camello-Primavera-Oracle: Error al crear el bean java.lang.IllegalStateException: no se Pudo cargar el controlador JDBC de la clase [de oracle.jdbc.el controlador.OracleDriver]

Que estoy recibiendo este error desde ayer, y aunque he intentado todo lo que vino a mi mente o que he encontrado buscando en internet, no puedo resolverlo.
Contexto: java 6, Primavera 3.1.4, camello 2.11.1, el controlador de Oracle 10.2.0.2.

Tengo este grano en camello contexto de archivo:

<bean id="myDataSource"  class="**org.springframework.jdbc.datasource.DriverManagerDataSource**">
  <property name="driverClassName" value="**oracle.jdbc.driver.OracleDriver"**/>
  <property name="url" value="jdbc:...."/>
  <property name="username" value="userhere"/>
  <property name="password" value="passwordhere"/>
</bean> 

También he intentado con esta clase de bean: class=»org.apache.commons.el dbcp.BasicDataSource»
Y una de frijol en alguna otra parte el uso de este grano.
Tengo esto en POM (Por cierto, me trajo a esta dependencia de otro proyecto que apunta a la misma base de datos, así que es la versión correcta):

<dependency>
  <groupId>com.oracle</groupId>
  <artifactId>ojdbc14</artifactId>
  <version>10.2.0.2</version> 
  <scope>provided</scope>
</dependency>

También tengo esta, porque de otra cosa que he intentado hacer que funcione:

<dependency>
  <groupId>org.apache.camel</groupId>
  <artifactId>camel-jdbc</artifactId>
  <version>2.11.1</version>
</dependency>   
<dependency>
  <groupId>org.springframework</groupId>
  <artifactId>spring-jdbc</artifactId>
  <version>3.1.4.RELEASE</version>
</dependency>
<dependency>
  <groupId>commons-dbcp</groupId>
  <artifactId>commons-dbcp</artifactId>
  <version>1.4</version>
</dependency>
  • La conexión de datos (url, usuario y contraseña), es verificado, y es correcto para cada uno de los ambientes » db he probado a conectar.
  • Puedo ver el ojdbc14 jar en dependencias Maven, también veo que al hacer «maven correr» con la salida de depuración activado: [DEBUG] la Adición de proyecto dependencia artefacto: ojdbc14 a classpath
  • Puedo ver la clase de de oracle.jdbc.el controlador.OracleDriver en el interior de la jarra.

Sin embargo, estoy recibiendo estos errores cada vez:

  • Cuando el uso de la clase=»org.apache.commons.el dbcp.BasicDataSource» como la clase de origen de datos:
    clase=»org.apache.commons.el dbcp.BasicDataSource»

            [29 Nov 2013 13:39:03,257][e) thread #0 - timer://kickoff] DefaultErrorHandler            ERROR Failed delivery for (MessageId: ID-vpar-alcantara-51044-1385743141288-0-1 on ExchangeId: ID-vpar-alcantara-51044-1385743141288-0-2). Exhausted after delivery attempt: 1 caught: org.apache.commons.dbcp.SQLNestedException: Cannot load JDBC driver class 'oracle.jdbc.driver.OracleDriver'
            org.apache.commons.dbcp.SQLNestedException: Cannot load JDBC driver class 'oracle.jdbc.driver.OracleDriver'
                at org.apache.commons.dbcp.BasicDataSource.createConnectionFactory(BasicDataSource.java:1429)
                at org.apache.commons.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:1371)
                at org.apache.commons.dbcp.BasicDataSource.getConnection(BasicDataSource.java:1044)
                at org.apache.camel.component.jdbc.JdbcProducer.processingSqlBySettingAutoCommit(JdbcProducer.java:76)
                at org.apache.camel.component.jdbc.JdbcProducer.process(JdbcProducer.java:63)
                at org.apache.camel.util.AsyncProcessorConverterHelper$ProcessorToAsyncProcessorBridge.process(AsyncProcessorConverterHelper.java:61)
                at org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:73)
                at org.apache.camel.processor.SendProcessor$2.doInAsyncProducer(SendProcessor.java:122)
                at org.apache.camel.impl.ProducerCache.doInAsyncProducer(ProducerCache.java:298)
                at org.apache.camel.processor.SendProcessor.process(SendProcessor.java:117)
                at org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:73)
                at org.apache.camel.processor.DelegateAsyncProcessor.processNext(DelegateAsyncProcessor.java:99)
                at org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:90)
                at org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:72)
                at org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:73)
                at org.apache.camel.processor.DelegateAsyncProcessor.processNext(DelegateAsyncProcessor.java:99)
                at org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:90)
                at org.apache.camel.processor.interceptor.BacklogTracerInterceptor.process(BacklogTracerInterceptor.java:84)
                at org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:73)
                at org.apache.camel.processor.DelegateAsyncProcessor.processNext(DelegateAsyncProcessor.java:99)
                at org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:90)
                at org.apache.camel.processor.interceptor.TraceInterceptor.process(TraceInterceptor.java:91)
                at org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:73)
                at org.apache.camel.processor.RedeliveryErrorHandler.processErrorHandler(RedeliveryErrorHandler.java:391)
                at org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:273)
                at org.apache.camel.processor.RouteContextProcessor.processNext(RouteContextProcessor.java:46)
                at org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:90)
                at org.apache.camel.processor.interceptor.DefaultChannel.process(DefaultChannel.java:335)
                at org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:73)
                at org.apache.camel.processor.Pipeline.process(Pipeline.java:117)
                at org.apache.camel.processor.Pipeline.process(Pipeline.java:80)
                at org.apache.camel.processor.RouteContextProcessor.processNext(RouteContextProcessor.java:46)
                at org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:90)
                at org.apache.camel.processor.UnitOfWorkProcessor.processAsync(UnitOfWorkProcessor.java:150)
                at org.apache.camel.processor.UnitOfWorkProcessor.process(UnitOfWorkProcessor.java:117)
                at org.apache.camel.processor.RouteInflightRepositoryProcessor.processNext(RouteInflightRepositoryProcessor.java:48)
                at org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:90)
                at org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:73)
                at org.apache.camel.processor.DelegateAsyncProcessor.processNext(DelegateAsyncProcessor.java:99)
                at org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:90)
                at org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:72)
                at org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:99)
                at org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:86)
                at org.apache.camel.component.timer.TimerConsumer.sendTimerExchange(TimerConsumer.java:135)
                at org.apache.camel.component.timer.TimerConsumer$1.run(TimerConsumer.java:63)
                at java.util.TimerThread.mainLoop(Timer.java:555)
                at java.util.TimerThread.run(Timer.java:505)
            Caused by: java.lang.ClassNotFoundException: oracle.jdbc.driver.OracleDriver
                at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
                at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
                at java.security.AccessController.doPrivileged(Native Method)
                at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
                at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
                at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
                at org.apache.commons.dbcp.BasicDataSource.createConnectionFactory(BasicDataSource.java:1420)
                ... 46 more
            [29 Nov 2013 13:39:03,265][e) thread #0 - timer://kickoff] TimerConsumer                  WARN  Error processing exchange. Exchange[Message: select vendor_style from supplier_ingest_style where  bluefly_product_color is not null]. Caused by: [org.apache.commons.dbcp.SQLNestedException - Cannot load JDBC driver class 'oracle.jdbc.driver.OracleDriver']
            org.apache.commons.dbcp.SQLNestedException: Cannot load JDBC driver class 'oracle.jdbc.driver.OracleDriver'
                at org.apache.commons.dbcp.BasicDataSource.createConnectionFactory(BasicDataSource.java:1429)
                at org.apache.commons.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:1371)
                at org.apache.commons.dbcp.BasicDataSource.getConnection(BasicDataSource.java:1044)
                at org.apache.camel.component.jdbc.JdbcProducer.processingSqlBySettingAutoCommit(JdbcProducer.java:76)
                at org.apache.camel.component.jdbc.JdbcProducer.process(JdbcProducer.java:63)
                at org.apache.camel.util.AsyncProcessorConverterHelper$ProcessorToAsyncProcessorBridge.process(AsyncProcessorConverterHelper.java:61)
                at org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:73)
                at org.apache.camel.processor.SendProcessor$2.doInAsyncProducer(SendProcessor.java:122)
                at org.apache.camel.impl.ProducerCache.doInAsyncProducer(ProducerCache.java:298)
                at org.apache.camel.processor.SendProcessor.process(SendProcessor.java:117)
                at org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:73)
                at org.apache.camel.processor.DelegateAsyncProcessor.processNext(DelegateAsyncProcessor.java:99)
                at org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:90)
                at org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:72)
                at org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:73)
                at org.apache.camel.processor.DelegateAsyncProcessor.processNext(DelegateAsyncProcessor.java:99)
                at org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:90)
                at org.apache.camel.processor.interceptor.BacklogTracerInterceptor.process(BacklogTracerInterceptor.java:84)
                at org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:73)
                at org.apache.camel.processor.DelegateAsyncProcessor.processNext(DelegateAsyncProcessor.java:99)
                at org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:90)
                at org.apache.camel.processor.interceptor.TraceInterceptor.process(TraceInterceptor.java:91)
                at org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:73)
                at org.apache.camel.processor.RedeliveryErrorHandler.processErrorHandler(RedeliveryErrorHandler.java:391)
                at org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:273)
                at org.apache.camel.processor.RouteContextProcessor.processNext(RouteContextProcessor.java:46)
                at org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:90)
                at org.apache.camel.processor.interceptor.DefaultChannel.process(DefaultChannel.java:335)
                at org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:73)
                at org.apache.camel.processor.Pipeline.process(Pipeline.java:117)
                at org.apache.camel.processor.Pipeline.process(Pipeline.java:80)
                at org.apache.camel.processor.RouteContextProcessor.processNext(RouteContextProcessor.java:46)
                at org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:90)
                at org.apache.camel.processor.UnitOfWorkProcessor.processAsync(UnitOfWorkProcessor.java:150)
                at org.apache.camel.processor.UnitOfWorkProcessor.process(UnitOfWorkProcessor.java:117)
                at org.apache.camel.processor.RouteInflightRepositoryProcessor.processNext(RouteInflightRepositoryProcessor.java:48)
                at org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:90)
                at org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:73)
                at org.apache.camel.processor.DelegateAsyncProcessor.processNext(DelegateAsyncProcessor.java:99)
                at org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:90)
                at org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:72)
                at org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:99)
                at org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:86)
                at org.apache.camel.component.timer.TimerConsumer.sendTimerExchange(TimerConsumer.java:135)
                at org.apache.camel.component.timer.TimerConsumer$1.run(TimerConsumer.java:63)
                at java.util.TimerThread.mainLoop(Timer.java:555)
                at java.util.TimerThread.run(Timer.java:505)
            Caused by: java.lang.ClassNotFoundException: oracle.jdbc.driver.OracleDriver
                at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
                at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
                at java.security.AccessController.doPrivileged(Native Method)
                at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
                at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
                at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
                at org.apache.commons.dbcp.BasicDataSource.createConnectionFactory(BasicDataSource.java:1420)
  • Cuando el uso de la clase=»org.springframework.jdbc.origen de datos.DriverManagerDataSource»

            java.lang.reflect.InvocationTargetException
                at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
                at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
                at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
                at java.lang.reflect.Method.invoke(Method.java:606)
                at org.apache.camel.maven.RunMojo$1.run(RunMojo.java:459)
                at java.lang.Thread.run(Thread.java:744)
            Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'myDataSource' defined in file [C:\GITWorkspace\vendorIngestion\target\classes\META-INF\spring\camel-context.xml]: Error setting property values; nested exception is org.springframework.beans.PropertyBatchUpdateException; nested PropertyAccessExceptions (1) are:
            PropertyAccessException 1: org.springframework.beans.MethodInvocationException: Property 'driverClassName' threw exception; nested exception is java.lang.IllegalStateException: Could not load JDBC driver class [oracle.jdbc.driver.OracleDriver]
                at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1396)
                at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1118)
                at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:517)
                at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456)
                at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:294)
                at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:225)
                at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:291)
                at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193)
                at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:607)
                at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:925)
                at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:472)
                at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:139)
                at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:93)
                at org.apache.camel.spring.Main.createDefaultApplicationContext(Main.java:186)
                at org.apache.camel.spring.Main.doStart(Main.java:140)
                at org.apache.camel.support.ServiceSupport.start(ServiceSupport.java:61)
                at org.apache.camel.main.MainSupport.run(MainSupport.java:148)
                at org.apache.camel.main.MainSupport.run(MainSupport.java:343)
                at org.apache.camel.spring.Main.main(Main.java:73)
                ... 6 more
            Caused by: org.springframework.beans.PropertyBatchUpdateException; nested PropertyAccessExceptions (1) are:
            PropertyAccessException 1: org.springframework.beans.MethodInvocationException: Property 'driverClassName' threw exception; nested exception is java.lang.IllegalStateException: Could not load JDBC driver class [oracle.jdbc.driver.OracleDriver]
                at org.springframework.beans.AbstractPropertyAccessor.setPropertyValues(AbstractPropertyAccessor.java:102)
                at org.springframework.beans.AbstractPropertyAccessor.setPropertyValues(AbstractPropertyAccessor.java:58)
                at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1393)

    En los dos mensajes que no puede cargar OracleDriver al parecer, aunque no puedo ver por qué exactamente. La primera de ellas dice ClassNotfoundException, y el segundo de java.lang.IllegalStateException.

Ahora mismo estoy funcionando con maven pluggin en Eclipse, yo también lo intentó, sólo en caso de que, aun sabiendo que no es una solución, cuando se ejecuta con Maven, para agregar el ojdbc frasco hasta el eclipse classpath. Pero nada funcionó. El controlador de oracle versión es la correcta para nuestro Orcale, la dirección url es correcta, por lo que el usuario y la contraseña, he tratado de señalar a cada uno de los ambientes db he acceso (local, dev, control de calidad, puesta en escena). Nada funcionó.

Alguien tiene alguna idea de por qué no puede encontrar o carga OracleDriver cuando en realidad es agregar el jar al classpath?

InformationsquelleAutor user3049941 | 2013-11-29

3 Kommentare

  1. 4

    Se ejecuta esta aplicación en un servidor de aplicaciones? Si el servidor no tiene el controlador JDBC en la ruta de clases de tratar de establecer el ámbito predeterminado (compilar) para el controlador de Oracle de dependencia, ya que es el valor predeterminado sólo puede omitir el ámbito de aplicación de la etiqueta:

    <dependency>
     <groupId>com.oracle</groupId>
     <artifactId>ojdbc14</artifactId>
     <version>10.2.0.2</version> 
    </dependency>

    La diferencia entre ambos ámbitos:

    • compilar
      Este es el ámbito, que se utiliza si no se especifica ninguno. Compilar las dependencias están disponibles en todas las rutas de clases de un proyecto. Además, las dependencias que se propagan a proyectos dependientes.
    • siempre
      Esto se parece mucho a compilar, pero indica que se espera que el JDK o un recipiente para proporcionar la dependencia en tiempo de ejecución. Por ejemplo, cuando la construcción de una aplicación web Java Enterprise Edition, establece la dependencia en el Servlet API y relacionadas con el Api de Java EE para el alcance previsto debido a que el contenedor web que proporciona las clases. Este ámbito de aplicación sólo está disponible en la compilación y prueba de ruta de clases, y no es transitiva.
    • muchas gracias!!!!! Para que una rápida respuesta y por su propia respuesta. Se trabajó, que alcance la cosa no cruzó por mi mente. Muchas gracias de nuevo!!!!
    • No hay problema, es un error clásico que es fácil de pasar por alto. Por favor upvote/aceptar mi respuesta si era de ninguna ayuda 😉
    • Y gracias por el alcance de la explicación. Yo no tenía idea de qué era eso.!
  2. 0

    Estoy usando una versión diferente del controlador de oracle (11.X.X.X) pero puedes probar esto y ver si funciona para:

    <bean id="dataSource" class="oracle.jdbc.pool.OracleDataSource" destroy-method="close" lazy-init="true">
      <property name="dataSourceName" value="ds" />
      <property name="DriverType" value="{your_driver_type}" />
      <property name="user" value="{user}" />
      <property name="password" value="{password}" />
    </bean>

    Estoy usando esta configuración con el Componente SQL y funciona, así que supongo que debería funcionar de la misma para el Camello JDBC.

    • Gracias por tu respuesta, pero era en realidad lo que NickDK ha escrito, el ámbito de aplicación. Cuando me la cambió por defecto en lugar de siempre, comenzó a trabajar. Gracias de nuevo por responder. 😀
  3. 0

    Sí gracias por la solución.
    En mi caso la escritura «compile» y, a continuación, haciendo **Maven
    actualización del proyecto de trabajo**

    Problema:

    PropertyAccessException 1:
    org.springframework.los frijoles.MethodInvocationException: Propiedad
    ‘driverClassName’ tiró de excepción; excepciones anidadas es
    java.lang.IllegalStateException: no se Pudo cargar el controlador JDBC de clase
    [org.h2.Driver]

    Solución:
    Escribí alcance para H2 dependency como sigue nd, a continuación, haga clic en Project-->Maven--> update Project

     <dependency>
       <groupId>com.h2database</groupId>
       <artifactId>h2</artifactId>
       <version>1.4.195</version>
       <scope>compile</scope>
       </dependency>

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea