Problema com biblioteca

Salve!

é pseguinte: no jdk, roda perfeitamente a classe que pega a conexão com o banco firebird, no class path coloquei o driver jaybird-2.1.6-full… passo ele pro pacote .jar e jogo esse driver no pacote… a classe é encontrada, mas no jre ele aponta o seguinte stack

java.sql.SQLException: No suitable driver found for jdbc:firebirdsql:localhost/3050:C://Users//User//Desktop//08112010.GDB
at java.sql.DriverManager.getConnection(DriverManager.java:602)
at java.sql.DriverManager.getConnection(DriverManager.java:154)
at QuipoSus.PooDri.getConexaoPool(PooDri.java:38)

O driver, o pacote, é o mesmo. E na ext não tem nada, nem nos classpaths do sistema… como está funcionando no jdk, acho q é alguma falha com as bibliotecas, mas não consigo resolver!
alguém tem alguma ideia do q pode ser?
valeu ae

Posta a tua classe de conexão pra analisarmos…

Esse C: está muito estranho…

Se não me engano, aí deveria vir o nome do teu BD e não o caminho físico da tua tabela… Enfim…

Posta aí…

ae vai


  import org.apache.commons.dbcp.*;
   import org.apache.commons.pool.*;
   import org.apache.commons.pool.impl.*;
   import java.sql.*;
   import javax.sql.*;

   import java.util.Properties;
   public class PooDri {
      static Properties props = new Properties();
   
      public Connection getConexaoPool() {
         Connection connUsingDriver = null;
         Connection connUsingDataSource = null;
         Statement stmt = null;
         ResultSet rset = null;
      
         try {
         
          
            Class.forName("org.firebirdsql.jdbc.FBDriver");
     
         
            String uri = "jdbc:firebirdsql:localhost/3050:C://Users//User//Desktop//08112010.GDB";
           
            props.put("user", "sysdba");
            props.put ("password", "masterkey");
            props.put ("charset", "UTF8");
            props.put("lc_ctype", "ISO8859_1");
         
         
           
            //PoolingDriver Section
         	
            registerPoolingDriver(uri);
            connUsingDriver = DriverManager.getConnection(uri, props);  
            System.out.println("[PoolingDriver] DB Name = " +
                connUsingDriver.getMetaData().getDatabaseProductName());
         
            //PoolingDataSource Section
            DataSource dataSrc = getPoolingDataSource(uri, props);
            connUsingDataSource = dataSrc.getConnection();
            System.out.println("[PoolingDataSource] DB Name = " +
                connUsingDataSource.getMetaData().getDatabaseProductName());
         } 
            catch (Exception e) {
               e.printStackTrace();
              // Tela.Finaliza("Não conectou ao banco de dados");
            } 
         finally {
            try {
               if (rset != null) {
                  rset.close();
               }
            
               if (stmt != null) {
                  stmt.close();
               }
            
               if (connUsingDriver != null) {
                  connUsingDriver.close();
               }
            
               if (connUsingDataSource != null) {
                  //connUsingDataSource.close();
               }
            } 
               catch (Exception e) {
                  e.printStackTrace();
               }
         }
         return connUsingDataSource;
      }
   
    /**Get a PoolingDataSource     */
      private static DataSource getPoolingDataSource(String uri, Properties props)
        throws Exception {
         ObjectPool connPool = getConnPool(uri, props);
         DataSource dataSrc = new PoolingDataSource(connPool);
      
         return dataSrc;
      }
   
    /**Register a PoolingDriver     */
      private static void registerPoolingDriver(String uri)
        throws Exception {
         ObjectPool connPool = getConnPool(uri, props);
         PoolingDriver driver = new PoolingDriver();
         driver.registerPool("user", connPool);
      }
   
    /**Get Connection Pool     */
      private static ObjectPool getConnPool(String uri, Properties props) throws Exception {
         ObjectPool connPool = new GenericObjectPool(null);
         ConnectionFactory connFactory = new DriverManagerConnectionFactory(uri,
                props);
         PoolableConnectionFactory poolableConnFactory = new PoolableConnectionFactory(connFactory,
                connPool, null, null, false, true);
      
         return connPool;
      }
   }




nunca havia usado o getConnection passando um Properties…

No mais… tira esse C://Users//User//Desktop//08112010.GDB e coloca o nome do teu BD no Firebird… sinceramente, nunca vi essa assinatura de URL de conexão, de repente até funcione, mas que está estranho está…

Abs []

Poutz cara… pior que no Firebird é assim…

Dá uma pesquisada aí e com uma simples mudança, acho que teu código funcionará… Só não vou dizer qual é, lógico…

Abs e sucesso nos estudos []

[EDIT] - Quando disse “dá uma pesquisada aí” o aí é no Link que passei…

[quote=adriano_si]Poutz cara… pior que no Firebird é assim…

Dá uma pesquisada aí e com uma simples mudança, acho que teu código funcionará… Só não vou dizer qual é, lógico…

Abs e sucesso nos estudos []

[EDIT] - Quando disse “dá uma pesquisada aí” o aí é no Link que passei…[/quote]

Mas ele funciona!!! perfeitamente, do começo ao fim, o servidor roda dias, mas só se for pelo jdk!!! isso é q está estranho… uso o jgrasp, por ele, funciona normal… quanto crio o .jar, com tudo, ele acha a classe e tals, mas dá aquele erro… de qualquer modo vou pesquisar no link sim

estás salvando teu Driver JDBC junto com teu jar ???

Tudo q está no classpath do projeto está também salvo no jar… são eles:
commons-dbcp
commons-pool
e jaybird-full

em tese, era pra funcionar…

Entendeste o erro né ? ele não está encontrando o Driver adequado… Estás usando o mesmo Driver no Jar ?? está na versão correta ?? Entra no Driver e vê se acha a classe FBDriver… Pelo jeito, é como se teu driver não estivesse visível pela aplicação… estás gerando o Jar como ???

Abs []

Gero o jar a partir do jgrasp. Fica certo, este FBDriver está lá dentro sim, é exatemente o mesmo arquivo. Ele fica como um arquivo, o programa vai criando as pastas org/firebirdsql/jdbc/ e lá está o FBDriver.class… tanto q ele acha, já testeis isso mudando o nome do caminho pra ocasionar um erro, já q é reflexão, só erra em tmp de execução… se o caminho ou nome nao estivessem lá, daria classe nao encontrada… isso eu já testei…

Também não é problema com as bibliotecas q vem no jaybird… vem uma lib, q estou adcionando também

?

Bom, mudei completamente minha classe… e agora ela retorna esse fwbds nulo, sempree…


package QuipoSus;
   
  
   import java.sql.*;  
   import javax.sql.*; 
  
   import org.firebirdsql.jdbc.FBWrappingDataSource;
   import java.util.Properties;  
   public class PooDri {  
        
      static boolean FBDriverLoaded = false;
      static org.firebirdsql.jdbc.FBWrappingDataSource fbwds = null;
         
      public Connection getConexaoPool() {
      
         Connection con = null;
      
         if (!FBDriverLoaded) {
            try {
               fbwds = new org.firebirdsql.jdbc.FBWrappingDataSource();
               FBDriverLoaded = true;
            } 
               catch (Exception e) {
                  System.out.println(
                     "Could Not create org.firebirdsql.jdbc.FBWrappingDataSource, error: "
                     + e
                     + "\n");
               }
            fbwds.setDatabase("localhost/3050:C://Users//User//Desktop//sus08112010.GDB");
            fbwds.setUserName("SYSDBA");
            fbwds.setPassword("masterkey");
            fbwds.setIdleTimeoutMinutes(30);
            fbwds.setPooling(true); // Ativa pooling para esta fonte de dados.
            fbwds.setMinSize(5);
         // Seta o numero minimo de conexoes mantidos no pool.
            fbwds.setMaxSize(30);
         // Seta o numero maximo de conexoes que podem ser abertas ao mesmo tempo.
                    
         } 
         else {
            System.out.println(
               "Firebird Driver already exists, not reloaded.\n");
         }
         
      	
         try {
            fbwds.setLoginTimeout(10);
            con =    fbwds.getConnection();
         } 
            catch (Exception e) {
               System.out.println(
                     "Could not set Login Timeout in SQLDriver, error: "
                     + e
                     + "\n");
            }
      
      	
      	
      	
         return con;
      } 
   }