Hi.
I cannot even build the simple eg demo from the Learn Hibernate for Java tutorial. I'm getting a "No suitable driver error" even though I've placed an Oracle JDBC driver jar file in the lib directory and added it to my CLASSPATH. I'm hoping someone has been through this before and can help. I'm also hoping this is not a simple idiotic typo on my part, but jeez, ya think a guy could get the simple example demo going:-(
I added my hibernate.properties file at the end, in case it helps.
Thanks,
Tom K.
Hibernate version: 3.1
Mapping documents:
Code between sessionFactory.openSession() and session.close():
Full stack trace of any exception that occurs:
C:\hibernate-3.1>echo
%CLASSPATH%
"C:\hibernate-3.1\lib\ojdbc14.jar;C:\apache-ant-1.6.1\lib\antlr.debug.jar;C:\ap
ache-ant-1.6.1\lib\antlr-2.7.6rc1.jar;C:\apache-ant-1.6.1\lib\junit-3.8.1.jar;C:
\hibernate-3.1\lib\ojdbc14.jar"
C:\hibernate-3.1>dir C:\hibernate-3.1\lib\oj*jar
Volume in drive C has no label.
Volume Serial Number is 5C87-CC13
Directory of C:\hibernate-3.1\lib
02/06/2006 12:33 PM 1,536,773 ojdbc14.jar
1 File(s) 1,536,773 bytes
0 Dir(s) 25,029,963,776 bytes free
C:\hibernate-3.1>build eg
C:\hibernate-3.1>java -cp "lib/ant-launcher-1.6.5.jar" org.apache.tools.ant.laun
ch.Launcher -lib lib eg
Buildfile: build.xml
[taskdef] Could not load definitions from resource checkstyletask.properties.
It could not be found.
[taskdef] Could not load definitions from resource clovertasks. It could not b
e found.
eg:
[echo] remember to place your JDBC driver in the lib directory
[java] 13:00:48,529 INFO Environment:479 - Hibernate 3.1.2
[java] 13:00:48,560 INFO Environment:494 - loaded properties from resource
hibernate.properties: {hibernate.jdbc.use_get_generated_keys=false, hibernate.c
onnection.password=****, hibernate.jdbc.batch_versioned_data=true, hibernate.use
_identifer_rollback=true, hibernate.query.substitutions=yes 'Y', no 'N', hiberna
te.cache.region_prefix=hibernate.test, hibernate.default_catalog=test, hibernate
.show_sql=true, hibernate.proxool.pool_alias=pool1, hibernate.jdbc.batch_size=3,
hibernate.jdbc.fetch_size=25, hibernate.default_batch_fetch_size=8, hibernate.t
ransaction.flush_before_completion=, hibernate.hbm2ddl.auto=validate, hibernate.
jdbc.wrap_result_sets=, hibernate.jdbc.use_streams_for_binary=true, hibernate.ma
x_fetch_depth=1, hibernate.default_schema=test, hibernate.jdbc.use_scrollable_re
sultset=true, hibernate.format_sql=true, hibernate.jdbc.factory_class=, hibernat
e.connection.pool_size=1, hibernate.connection.username=ora, hibernate.connectio
n.isolation=4, hibernate.transaction.auto_close_session=, hibernate.jdbc.sql_exc
eption_converter=, hibernate.connection.driver_class=oracle.jdbc.driver.OracleDr
iver, hibernate.cache.provider_class=org.hibernate.cache.HashtableCacheProvider,
hibernate.use_sql_comments=true, hibernate.proxool.existing_pool=true, hibernat
e.cglib.use_reflection_optimizer=true, hibernate.order_updates=true, hibernate.t
ransaction.factory_class=org.hibernate.transaction.JDBCTransactionFactory, hiber
nate.dialect=org.hibernate.dialect.Oracle9Dialect, hibernate.connection.url=jdbc
:oracle:thin:@localhost:1521:orcl}
[java] 13:00:48,560 INFO Environment:524 - using java.io streams to persis
t binary types
[java] 13:00:48,576 INFO Environment:525 - using CGLIB reflection optimize
r
[java] 13:00:48,576 INFO Environment:555 - using JDK 1.4 java.sql.Timestam
p handling
[java] 13:00:48,670 INFO Configuration:497 - Reading mappings from resourc
e: org/hibernate/auction/AuctionItem.hbm.xml
[java] 13:00:49,170 INFO HbmBinder:309 - Mapping class: org.hibernate.auct
ion.AuctionItem -> AuctionItem
[java] 13:00:49,310 INFO Configuration:497 - Reading mappings from resourc
e: org/hibernate/auction/Bid.hbm.xml
[java] 13:00:49,373 INFO HbmBinder:309 - Mapping class: org.hibernate.auct
ion.Bid -> Bid
[java] 13:00:49,420 INFO HbmBinder:824 - Mapping subclass: org.hibernate.a
uction.BuyNow -> Bid
[java] 13:00:49,420 INFO Configuration:497 - Reading mappings from resourc
e: org/hibernate/auction/User.hbm.xml
[java] 13:00:49,467 INFO HbmBinder:309 - Mapping class: org.hibernate.auct
ion.User -> AuctionUser
[java] 13:00:49,482 INFO HbmBinder:2349 - Mapping collection: org.hibernat
e.auction.AuctionItem.bids -> Bid
[java] 13:00:49,482 INFO HbmBinder:2349 - Mapping collection: org.hibernat
e.auction.User.bids -> Bid
[java] 13:00:49,482 INFO HbmBinder:2349 - Mapping collection: org.hibernat
e.auction.User.auctions -> AuctionItem
[java] 13:00:49,701 INFO ProxoolConnectionProvider:104 - Configuring Proxo
ol Provider using existing pool in memory: proxool.pool1
[java] 13:00:49,701 INFO ProxoolConnectionProvider:162 - JDBC isolation le
vel: REPEATABLE_READ
[java] 13:00:49,701 INFO ProxoolConnectionProvider:166 - autocommit mode:
false
[java] 13:00:49,701 WARN SettingsFactory:103 - Could not obtain connection
metadata
[java]
java.sql.SQLException: No suitable driver
[java] at java.sql.DriverManager.getConnection(DriverManager.java:532)
[java] at java.sql.DriverManager.getConnection(DriverManager.java:193)
[java] at org.hibernate.connection.ProxoolConnectionProvider.getConnect
ion(ProxoolConnectionProvider.java:53)
[java] at org.hibernate.cfg.SettingsFactory.buildSettings(SettingsFacto
ry.java:72)
[java] at org.hibernate.cfg.Configuration.buildSettings(Configuration.j
ava:1881)
[java] at org.hibernate.cfg.Configuration.buildSessionFactory(Configura
tion.java:1174)
[java] at org.hibernate.auction.Main.main(Main.java:368)
[java] 13:00:49,732 INFO Dialect:103 - Using dialect: org.hibernate.dialec
t.Oracle9Dialect
[java] 13:00:49,748 INFO TransactionFactoryFactory:34 - Transaction strate
gy: org.hibernate.transaction.JDBCTransactionFactory
[java] 13:00:49,748 INFO TransactionManagerLookupFactory:33 - No Transacti
onManagerLookup configured (in JTA environment, use of read-write or transaction
al second-level cache is not recommended)
[java] 13:00:49,748 INFO SettingsFactory:125 - Automatic flush during befo
reCompletion(): disabled
[java] 13:00:49,748 INFO SettingsFactory:129 - Automatic session close at
end of transaction: disabled
[java] 13:00:49,748 INFO SettingsFactory:355 - Batcher factory:
[java] org.hibernate.HibernateException: could not instantiate BatcherFacto
ry:
[java] at org.hibernate.cfg.SettingsFactory.createBatcherFactory(Settin
gsFactory.java:360)
[java] at org.hibernate.cfg.SettingsFactory.buildSettings(SettingsFacto
ry.java:141)
[java] at org.hibernate.cfg.Configuration.buildSettings(Configuration.j
ava:1881)
[java] at org.hibernate.cfg.Configuration.buildSessionFactory(Configura
tion.java:1174)
[java] at org.hibernate.auction.Main.main(Main.java:368)
[java] Caused by: java.lang.ClassNotFoundException:
[java] at java.lang.Class.forName0(Native Method)
[java] at java.lang.Class.forName(Class.java:141)
[java] at org.hibernate.util.ReflectHelper.classForName(ReflectHelper.j
ava:108)
[java] at org.hibernate.cfg.SettingsFactory.createBatcherFactory(Settin
gsFactory.java:357)
[java] ... 4 more
[java] Exception in thread "main"
BUILD FAILED
C:\hibernate-3.1\build.xml:707: Java returned: 1
Total time: 3 seconds
C:\hibernate-3.1>
C:\hibernate-3.1>java -version
java version "1.4.2_04"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.2_04-b05)
Java HotSpot(TM) Client VM (build 1.4.2_04-b05, mixed mode)
C:\hibernate-3.1>
Name and version of the database you are using:
Oracle 10g
The generated SQL (show_sql=true):
Debug level Hibernate log excerpt:
hibernate.properties file:
######################
### Query Language ###
######################
## define query language constants / function names
hibernate.query.substitutions yes 'Y', no 'N'
## select the classic query parser
#hibernate.query.factory_class org.hibernate.hql.classic.ClassicQueryTranslatorFactory
#################
### Platforms ###
#################
## JNDI Datasource
#hibernate.connection.datasource jdbc/test
#hibernate.connection.username db2
#hibernate.connection.password db2
## HypersonicSQL
hibernate.dialect org.hibernate.dialect.HSQLDialect
hibernate.connection.driver_class org.hsqldb.jdbcDriver
hibernate.connection.username sa
hibernate.connection.password
#hibernate.connection.url jdbc:hsqldb:hsql://localhost
#hibernate.connection.url jdbc:hsqldb:test
hibernate.connection.url jdbc:hsqldb:.
## MySQL
#hibernate.dialect org.hibernate.dialect.MySQLDialect
#hibernate.dialect org.hibernate.dialect.MySQLInnoDBDialect
#hibernate.dialect org.hibernate.dialect.MySQLMyISAMDialect
#hibernate.connection.driver_class com.mysql.jdbc.Driver
#hibernate.connection.url jdbc:mysql:///test
#hibernate.connection.username gavin
#hibernate.connection.password
## Oracle
hibernate.dialect org.hibernate.dialect.OracleDialect
hibernate.dialect org.hibernate.dialect.Oracle9Dialect
hibernate.connection.driver_class oracle.jdbc.driver.OracleDriver
hibernate.connection.username ora
hibernate.connection.password ora
hibernate.connection.url jdbc:oracle:thin:@localhost:1521:orcl
## PostgreSQL
#hibernate.dialect org.hibernate.dialect.PostgreSQLDialect
#hibernate.connection.driver_class org.postgresql.Driver
#hibernate.connection.url jdbc:postgresql:template1
#hibernate.connection.username pg
#hibernate.connection.password
## DB2
#hibernate.dialect org.hibernate.dialect.DB2Dialect
#hibernate.connection.driver_class COM.ibm.db2.jdbc.app.DB2Driver
#hibernate.connection.url jdbc:db2:test
#hibernate.connection.username db2
#hibernate.connection.password db2
## TimesTen (not supported yet)
#hibernate.dialect org.hibernate.dialect.TimesTenDialect
#hibernate.connection.driver_class com.timesten.jdbc.TimesTenDriver
#hibernate.connection.url jdbc:timesten:direct:test
#hibernate.connection.username
#hibernate.connection.password
## DB2/400
#hibernate.dialect org.hibernate.dialect.DB2400Dialect
#hibernate.connection.username user
#hibernate.connection.password password
## Native driver
#hibernate.connection.driver_class COM.ibm.db2.jdbc.app.DB2Driver
#hibernate.connection.url jdbc:db2://systemname
## Toolbox driver
#hibernate.connection.driver_class com.ibm.as400.access.AS400JDBCDriver
#hibernate.connection.url jdbc:as400://systemname
## Derby (Not supported!)
#hibernate.dialect org.hibernate.dialect.DerbyDialect
#hibernate.connection.driver_class org.apache.derby.jdbc.EmbeddedDriver
#hibernate.connection.username
#hibernate.connection.password
#hibernate.connection.url jdbc:derby:/test;create=true
## Sybase
#hibernate.dialect org.hibernate.dialect.SybaseDialect
#hibernate.connection.driver_class com.sybase.jdbc2.jdbc.SybDriver
#hibernate.connection.username sa
#hibernate.connection.password sasasa
#hibernate.connection.url jdbc:sybase:Tds:co3061835-a:5000/tempdb
## Mckoi SQL
#hibernate.dialect org.hibernate.dialect.MckoiDialect
#hibernate.connection.driver_class com.mckoi.JDBCDriver
#hibernate.connection.url jdbc:mckoi:///
#hibernate.connection.url jdbc:mckoi:local://C:/mckoi1.0.3/db.conf
#hibernate.connection.username admin
#hibernate.connection.password nimda
## SAP DB
#hibernate.dialect org.hibernate.dialect.SAPDBDialect
#hibernate.connection.driver_class com.sap.dbtech.jdbc.DriverSapDB
#hibernate.connection.url jdbc:sapdb://localhost/TST
#hibernate.connection.username TEST
#hibernate.connection.password TEST
#hibernate.query.substitutions yes 'Y', no 'N'
## MS SQL Server
#hibernate.dialect org.hibernate.dialect.SQLServerDialect
#hibernate.connection.username sa
#hibernate.connection.password sa
## JSQL Driver
#hibernate.connection.driver_class com.jnetdirect.jsql.JSQLDriver
#hibernate.connection.url jdbc:JSQLConnect://1E1/test
## JTURBO Driver
#hibernate.connection.driver_class com.newatlanta.jturbo.driver.Driver
#hibernate.connection.url jdbc:JTurbo://1E1:1433/test
## WebLogic Driver
#hibernate.connection.driver_class weblogic.jdbc.mssqlserver4.Driver
#hibernate.connection.url jdbc:weblogic:mssqlserver4:1E1:1433
## Microsoft Driver (not recommended!)
#hibernate.connection.driver_class com.microsoft.jdbc.sqlserver.SQLServerDriver
#hibernate.connection.url jdbc:microsoft:sqlserver://1E1;DatabaseName=test;SelectMethod=cursor
## jTDS (since version 0.9)
#hibernate.connection.driver_class net.sourceforge.jtds.jdbc.Driver
#hibernate.connection.url jdbc:jtds:sqlserver://1E1/test
## Interbase
#hibernate.dialect org.hibernate.dialect.InterbaseDialect
#hibernate.connection.username sysdba
#hibernate.connection.password masterkey
## DO NOT specify hibernate.connection.sqlDialect
## InterClient
#hibernate.connection.driver_class interbase.interclient.Driver
#hibernate.connection.url jdbc:interbase://localhost:3060/C:/firebird/test.gdb
## Pure Java
#hibernate.connection.driver_class org.firebirdsql.jdbc.FBDriver
#hibernate.connection.url jdbc:firebirdsql:localhost/3050:/firebird/test.gdb
## Pointbase
#hibernate.dialect org.hibernate.dialect.PointbaseDialect
#hibernate.connection.driver_class com.pointbase.jdbc.jdbcUniversalDriver
#hibernate.connection.url jdbc:pointbase:embedded:sample
#hibernate.connection.username PBPUBLIC
#hibernate.connection.password PBPUBLIC
## Ingres
#hibernate.dialect org.hibernate.dialect.IngresDialect
#hibernate.connection.driver_class ca.edbc.jdbc.EdbcDriver
#hibernate.connection.url jdbc:edbc://localhost:II7/database
#hibernate.connection.username user
#hibernate.connection.password password
## Mimer SQL
#hibernate.dialect org.hibernate.dialect.MimerSQLDialect
#hibernate.connection.driver_class com.mimer.jdbc.Driver
#hibernate.connection.url jdbc:mimer:multi1
#hibernate.connection.username hibernate
#hibernate.connection.password hibernate
#################################
### Hibernate Connection Pool ###
#################################
hibernate.connection.pool_size 1
###########################
### C3P0 Connection Pool###
###########################
#hibernate.c3p0.max_size 2
#hibernate.c3p0.min_size 2
#hibernate.c3p0.timeout 5000
#hibernate.c3p0.max_statements 100
#hibernate.c3p0.idle_test_period 3000
#hibernate.c3p0.acquire_increment 2
#hibernate.c3p0.validate false
##############################
### Proxool Connection Pool###
##############################
## Properties for external configuration of Proxool
hibernate.proxool.pool_alias pool1
## Only need one of the following
hibernate.proxool.existing_pool true
#hibernate.proxool.xml proxool.xml
#hibernate.proxool.properties proxool.properties
#################################
### Plugin ConnectionProvider ###
#################################
## use a custom ConnectionProvider (if not set, Hibernate will choose a built-in ConnectionProvider using hueristics)
#hibernate.connection.provider_class org.hibernate.connection.DriverManagerConnectionProvider
#hibernate.connection.provider_class org.hibernate.connection.DatasourceConnectionProvider
#hibernate.connection.provider_class org.hibernate.connection.C3P0ConnectionProvider
#hibernate.connection.provider_class org.hibernate.connection.ProxoolConnectionProvider
#######################
### Transaction API ###
#######################
## Enable automatic flush during the JTA beforeCompletion() callback
## (This setting is relevant with or without the Transaction API)
hibernate.transaction.flush_before_completion
## Enable automatic session close at the end of transaction
## (This setting is relevant with or without the Transaction API)
hibernate.transaction.auto_close_session
## the Transaction API abstracts application code from the underlying JTA or JDBC transactions
#hibernate.transaction.factory_class org.hibernate.transaction.JTATransactionFactory
hibernate.transaction.factory_class org.hibernate.transaction.JDBCTransactionFactory
## to use JTATransactionFactory, Hibernate must be able to locate the UserTransaction in JNDI
## default is java:comp/UserTransaction
## you do NOT need this setting if you specify hibernate.transaction.manager_lookup_class
#jta.UserTransaction jta/usertransaction
#jta.UserTransaction javax.transaction.UserTransaction
#jta.UserTransaction UserTransaction
## to use the second-level cache with JTA, Hibernate must be able to obtain the JTA TransactionManager
#hibernate.transaction.manager_lookup_class org.hibernate.transaction.JBossTransactionManagerLookup
#hibernate.transaction.manager_lookup_class org.hibernate.transaction.WeblogicTransactionManagerLookup
#hibernate.transaction.manager_lookup_class org.hibernate.transaction.WebSphereTransactionManagerLookup
#hibernate.transaction.manager_lookup_class org.hibernate.transaction.OrionTransactionManagerLookup
#hibernate.transaction.manager_lookup_class org.hibernate.transaction.ResinTransactionManagerLookup
##############################
### Miscellaneous Settings ###
##############################
## print all generated SQL to the console
hibernate.show_sql true
## format SQL in log and console
hibernate.format_sql true
## add comments to the generated SQL
hibernate.use_sql_comments true
## generate statistics
#hibernate.generate_statistics true
## auto schema export
hibernate.hbm2ddl.auto create-drop
hibernate.hbm2ddl.auto create
hibernate.hbm2ddl.auto update
hibernate.hbm2ddl.auto validate
## specify a default schema and catalog for unqualified tablenames
hibernate.default_schema test
hibernate.default_catalog test
## enable ordering of SQL UPDATEs by primary key
hibernate.order_updates true
## set the maximum depth of the outer join fetch tree
hibernate.max_fetch_depth 1
## set the default batch size for batch fetching
hibernate.default_batch_fetch_size 8
## rollback generated identifier values of deleted entities to default values
hibernate.use_identifer_rollback true
## enable CGLIB reflection optimizer (enabled by default)
#hibernate.cglib.use_reflection_optimizer false
#####################
### JDBC Settings ###
#####################
## specify a JDBC isolation level
hibernate.connection.isolation 4
## enable JDBC autocommit (not recommended!)
#hibernate.connection.autocommit true
## set the JDBC fetch size
hibernate.jdbc.fetch_size 25
## set the maximum JDBC 2 batch size (a nonzero value enables batching)
#hibernate.jdbc.batch_size 5
hibernate.jdbc.batch_size 3
## enable batch updates even for versioned data
hibernate.jdbc.batch_versioned_data true
## enable use of JDBC 2 scrollable ResultSets (specifying a Dialect will cause Hibernate to use a sensible default)
hibernate.jdbc.use_scrollable_resultset true
## use streams when writing binary types to / from JDBC
hibernate.jdbc.use_streams_for_binary true
## use JDBC 3 PreparedStatement.getGeneratedKeys() to get the identifier of an inserted row
hibernate.jdbc.use_get_generated_keys false
## choose a custom JDBC batcher
hibernate.jdbc.factory_class
## enable JDBC result set column alias caching
## (minor performance enhancement for broken JDBC drivers)
hibernate.jdbc.wrap_result_sets
## choose a custom SQL exception converter
hibernate.jdbc.sql_exception_converter
##########################
### Second-level Cache ###
##########################
## optimize chache for minimal "puts" instead of minimal "gets" (good for clustered cache)
#hibernate.cache.use_minimal_puts true
## set a prefix for cache region names
hibernate.cache.region_prefix hibernate.test
## disable the second-level cache
#hibernate.cache.use_second_level_cache false
## enable the query cache
#hibernate.cache.use_query_cache true
## store the second-level cache entries in a more human-friendly format
#hibernate.cache.use_structured_entries true
## choose a cache implementation
#hibernate.cache.provider_class org.hibernate.cache.EhCacheProvider
#hibernate.cache.provider_class org.hibernate.cache.EmptyCacheProvider
hibernate.cache.provider_class org.hibernate.cache.HashtableCacheProvider
#hibernate.cache.provider_class org.hibernate.cache.TreeCacheProvider
#hibernate.cache.provider_class org.hibernate.cache.OSCacheProvider
#hibernate.cache.provider_class org.hibernate.cache.SwarmCacheProvider
## choose a custom query cache implementation
#hibernate.cache.query_cache_factory
############
### JNDI ###
############
## specify a JNDI name for the SessionFactory
#hibernate.session_factory_name hibernate/session_factory
## Hibernate uses JNDI to bind a name to a SessionFactory and to look up the JTA UserTransaction;
## if hibernate.jndi.* are not specified, Hibernate will use the default InitialContext() which
## is the best approach in an application server
#file system
#hibernate.jndi.class com.sun.jndi.fscontext.RefFSContextFactory
#hibernate.jndi.url file:/
#WebSphere
#hibernate.jndi.class com.ibm.websphere.naming.WsnInitialContextFactory
#hibernate.jndi.url
iiop://localhost:900/