title: quartz.properties cant access mysql : Could not load driverClass com.mysql.jdbc.Driver
body: <p>i am struggling to resolve this matter, i have try to run a small test to connect with my mysql and it work.but when i am trying to work with quartz.properties it cannot access mysql.</p>
  
  <p>i am sure my jdbc mysql driver is fine. as other than using quartz.properties, i can access my mysql database.</p>
  
  <p>i need help. i have work on this for days now.</p>
  
  <p>here is the part i suspect have problem</p>
  
  <pre><code>#The details of the datasource specified previously  
  org.quartz.dataSource.myDS.driver =com.mysql.jdbc.Driver
  org.quartz.dataSource.myDS.URL =jdbc:mysql://10.1.1.111:3306/somedatabase
  org.quartz.dataSource.myDS.user =username
  org.quartz.dataSource.myDS.password =somepassword
  org.quartz.dataSource.myDS.maxConnections = 20
  </code></pre>
  
  <p>error output:</p>
  
  <pre><code>207 [main] INFO org.quartz.impl.StdSchedulerFactory  - Quartz scheduler 'MyScheduler' initialized   from default file in current working dir: 'quartz.properties'
   208 [main] INFO org.quartz.impl.StdSchedulerFactory  - Quartz scheduler version: 2.2.1
  267 [main] DEBUG com.mchange.v2.resourcepool.BasicResourcePool  - incremented pending_acquires: 1
  267 [main] DEBUG com.mchange.v2.resourcepool.BasicResourcePool  - incremented pending_acquires: 2
  268 [main] DEBUG com.mchange.v2.resourcepool.BasicResourcePool  - incremented pending_acquires: 3
  268 [main] DEBUG com.mchange.v2.resourcepool.BasicResourcePool  -   com.mchange.v2.resourcepool.BasicResourcePool@42af94c4 config: [start -&gt; 3; min -&gt; 1; max -&gt; 20; inc   -&gt; 3; num_acq_attempts -&gt; 30; acq_attempt_delay -&gt; 1000; check_idle_resources_delay -&gt; 0;    mox_resource_age -&gt; 0; max_idle_time -&gt; 0; excess_max_idle_time -&gt; 0; destroy_unreturned_resc_time -&gt;    0; expiration_enforcement_delay -&gt; 0; break_on_acquisition_failure -&gt; false;    debug_store_checkout_exceptions -&gt; false]
  269 [com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#2] WARN     com.mchange.v2.c3p0.DriverManagerDataSource  - Could not load driverClass com.mysql.jdbc.Driver
  java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
  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 java.lang.Class.forName0(Native Method)
  at java.lang.Class.forName(Class.java:190)
  </code></pre>
  
  <p>Here is my quartz code</p>
  
  <pre><code>public class QuartzDaily {
  static Logger log = Logger.getLogger("QuartzDaily");
  
  public static void main(String[] args) throws ParseException, SchedulerException, IOException,  NoSuchAlgorithmException 
  {
     //lines of codes to configure log
      DateFormat format3 = new SimpleDateFormat( "MM_dd_yyyy_HH_mm" );
      Date dateToday = new Date();
      String strToday= format3.format(dateToday); 
  
      BasicConfigurator.configure();
      PatternLayout pattern = new PatternLayout("%r [%t] %-5p %c %x - %m%n");
      FileAppender fileappender = new  FileAppender(pattern,"log\\QuartzScheduler_"+strToday+".txt");
  
      log.addAppender(fileappender);
      log.info("QuartzReport; main(): [** Starting scheduler services **]");
  
      //run quartz job
      quartzWeekly();
  
  
  }
  
  public static void quartzWeekly() throws SchedulerException{
  
    //some quartz job code
  
  }
  
  public static class TestJob implements Job {
      @Override
      public void execute(JobExecutionContext context) throws JobExecutionException {
  
          System.out.println("hello world");
      }   
  }
  }
  </code></pre>
  
  <p>Below is the full code, below code is not mine, it was taken from random tutorial site.</p>
  
  <pre><code>#Skip Update Check  
  #Quartz contains an "update check" feature that connects to a server to
  #check if there is a new version of Quartz available  
  org.quartz.scheduler.skipUpdateCheck: true
  
  org.quartz.scheduler.instanceName =MyScheduler
  org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool
  org.quartz.threadPool.threadCount = 4
  org.quartz.threadPool.threadsInheritContextClassLoaderOfInitializingThread = true
  org.quartz.threadPool.threadPriority = 5
  
  
  #specify the jobstore used  
  org.quartz.jobStore.misfireThreshold = 60000
  org.quartz.jobStore.class = org.quartz.simpl.RAMJobStore
  org.quartz.jobStore.class = org.quartz.impl.jdbcjobstore.JobStoreTX
  org.quartz.jobStore.driverDelegateClass = org.quartz.impl.jdbcjobstore.StdJDBCDelegate
  org.quartz.jobStore.useProperties = false
  
  #specify the TerracottaJobStore  
  #org.quartz.jobStore.class = org.terracotta.quartz.TerracottaJobStore  
  #org.quartz.jobStore.tcConfigUrl = localhost:9510  
  
  
  #The datasource for the jobstore that is to be used  
  org.quartz.jobStore.dataSource = myDS
  
  #quartz table prefixes in the database  
  org.quartz.jobStore.tablePrefix = qrtz_
  org.quartz.jobStore.misfireThreshold = 60000
  org.quartz.jobStore.isClustered = false
  
  #The details of the datasource specified previously  
  org.quartz.dataSource.myDS.driver =com.mysql.jdbc.Driver
  org.quartz.dataSource.myDS.URL =jdbc:mysql://10.1.1.11:3306/somedatabase
  org.quartz.dataSource.myDS.user =username
  org.quartz.dataSource.myDS.password =somepassword
  org.quartz.dataSource.myDS.maxConnections = 20
  
  #Clustering
  #clustering currently only works with the JDBC-Jobstore (JobStoreTX  
  #or JobStoreCMT). Features include load-balancing and job fail-over  
  #(if the JobDetail's "request recovery" flag is set to true). It is important to note that  
  # When using clustering on separate machines, make sure that their clocks are synchronized  
  #using some form of time-sync service (clocks must be within a second of each other).  
  #See http://www.boulder.nist.gov/timefreq/service/its.htm.  
  # Never fire-up a non-clustered instance against the same set of tables that any  
  #other instance is running against.  
  # Each instance in the cluster should use the same copy of the quartz.properties file.  
  
  org.quartz.jobStore.isClustered = true
  org.quartz.jobStore.clusterCheckinInterval = 20000
  
  #Each server must have the same copy of the configuration file.  
  #auto-generate instance ids.  
  org.quartz.scheduler.instanceId = AUTO
  
  #Note :  
  #If a job throws an exception, Quartz will typically immediately  
  #re-execute it (and it will likely throw the same exception again).  
  #It's better if the job catches all exception it may encounter, handle them,  
  #and reschedule itself, or other jobs. to work around the issue.  
  </code></pre>