title: Java SE + Spring Data + Hibernate
body: <p>I am trying to start a Java SE application with Spring Data + Hibernate and have done the follwowing till now:</p>
  
  <p><strong>Configuration File</strong></p>
  
  <pre><code>@Configuration
  @PropertySource("classpath:hibernate.properties")
  @EnableJpaRepositories
  @EnableTransactionManagement
  public class JpaConfiguration {
  
      private static final String PROPERTY_NAME_DATABASE_DRIVER = "db.driver";
      private static final String PROPERTY_NAME_DATABASE_PASSWORD = "db.password";
      private static final String PROPERTY_NAME_DATABASE_URL = "db.url";
      private static final String PROPERTY_NAME_DATABASE_USERNAME = "db.username";
  
      private static final String PROPERTY_NAME_HIBERNATE_DIALECT = "hibernate.dialect";
      private static final String PROPERTY_NAME_HIBERNATE_SHOW_SQL = "hibernate.show_sql";
      private static final String PROPERTY_NAME_ENTITYMANAGER_PACKAGES_TO_SCAN =
              "entitymanager.packages.to.scan";
  
      @Resource
      private Environment env;
  
      @Bean
      public DataSource dataSource() {
          DriverManagerDataSource dataSource = new DriverManagerDataSource();
  
          dataSource.setDriverClassName(
                  env.getRequiredProperty(PROPERTY_NAME_DATABASE_DRIVER));
          dataSource.setUrl(env.getRequiredProperty(PROPERTY_NAME_DATABASE_URL));
          dataSource.setUsername(env.getRequiredProperty(PROPERTY_NAME_DATABASE_USERNAME));
          dataSource.setPassword(env.getRequiredProperty(PROPERTY_NAME_DATABASE_PASSWORD));
  
          return dataSource;
      }
  
      @Bean
      public LocalContainerEntityManagerFactoryBean entityManagerFactory() {
          LocalContainerEntityManagerFactoryBean entityManagerFactoryBean = new
                  LocalContainerEntityManagerFactoryBean();
          entityManagerFactoryBean.setDataSource(dataSource());
          entityManagerFactoryBean.setPersistenceProviderClass(org.hibernate
                  .jpa.HibernatePersistenceProvider.class);
          entityManagerFactoryBean.setPackagesToScan(env.
                  getRequiredProperty(PROPERTY_NAME_ENTITYMANAGER_PACKAGES_TO_SCAN));
  
          entityManagerFactoryBean.setJpaProperties(hibProperties());
  
          return entityManagerFactoryBean;
      }
  
      private Properties hibProperties() {
          Properties properties = new Properties();
          properties.put(PROPERTY_NAME_HIBERNATE_DIALECT,
                  env.getRequiredProperty(PROPERTY_NAME_HIBERNATE_DIALECT));
          properties.put(PROPERTY_NAME_HIBERNATE_SHOW_SQL,
                  env.getRequiredProperty(PROPERTY_NAME_HIBERNATE_SHOW_SQL));
          return properties;
      }
  
      @Bean
      public JpaTransactionManager transactionManager() {
          JpaTransactionManager transactionManager = new JpaTransactionManager();
          transactionManager.setEntityManagerFactory(entityManagerFactory().getObject());
          return transactionManager;
      }
  
      @Bean
      public MainBean mainBean() {
          return new MainBean();
      }
  }
  </code></pre>
  
  <p><strong>Start class</strong> </p>
  
  <pre><code>public class Start {
  
  
      private static final String CONFIG_PACKAGE = "org.app.config";
  
  
      public static void main(String[] args) {
  
          try (AnnotationConfigApplicationContext ctx = new
                  AnnotationConfigApplicationContext()) {
  
              ctx.scan(CONFIG_PACKAGE);
              ctx.refresh();
  
              MainBean bean = ctx.getBean(MainBean.class);
              bean.start();
          }
      }
  }
  </code></pre>
  
  <p>Main Bean</p>
  
  <pre><code>public class MainBean {
  
          public void start() {
  
          System.out.println("Application Started. . .");
  
  
      }
  
  }
  </code></pre>
  
  <p>However I'm getting the following exception</p>
  
  <pre><code>Exception in thread "main" org.springframework.beans.factory.BeanDefinitionStoreException: Failed to read candidate component class: file [C:\MyPath\target\classes\org\app\config\JpaConfiguration.class]; nested exception is java.lang.IllegalArgumentException
      at org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider.findCandidateComponents(ClassPathScanningCandidateComponentProvider.java:281)
      at org.springframework.context.annotation.ClassPathBeanDefinitionScanner.doScan(ClassPathBeanDefinitionScanner.java:242)
      at org.springframework.context.annotation.ClassPathBeanDefinitionScanner.scan(ClassPathBeanDefinitionScanner.java:220)
      at org.springframework.context.annotation.AnnotationConfigApplicationContext.scan(AnnotationConfigApplicationContext.java:153)
      at org.app.Start.main(Start.java:25)
  Caused by: java.lang.IllegalArgumentException
      at org.springframework.asm.ClassReader.&lt;init&gt;(Unknown Source)
      at org.springframework.asm.ClassReader.&lt;init&gt;(Unknown Source)
      at org.springframework.asm.ClassReader.&lt;init&gt;(Unknown Source)
      at org.springframework.core.type.classreading.SimpleMetadataReader.&lt;init&gt;(SimpleMetadataReader.java:52)
      at org.springframework.core.type.classreading.SimpleMetadataReaderFactory.getMetadataReader(SimpleMetadataReaderFactory.java:80)
      at org.springframework.core.type.classreading.CachingMetadataReaderFactory.getMetadataReader(CachingMetadataReaderFactory.java:101)
      at org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider.findCandidateComponents(ClassPathScanningCandidateComponentProvider.java:257)
      ... 4 more
  </code></pre>
  
  <p>Anyone have an idea what I'm doing wrong?</p>