title: Spring-Boot cannot run in Eclipse and not recognize autowired DataSource
body: <p>I'm trying to run simple API server under control of Spring-boot and have 2 problems: <br>
  1. In Eclipse (Neon.1 Release (4.6.1)) when I try to launch application I get an error about servlet container (watch errors at the end of topic).<br>
  2. When I run gradle build and try to run jar I see error about not set DataSource bean.</p>
  
  <p><strong><em>UPDATE</strong>: Issue 1 not a big deal, cause other person was able to run project from IDEA perfectly fine and smooth (and it worked). Which is interesting, cause in any case, jar builded by gradle give error listed at the end of topic, about missed datasource, even if you move DataSource from main to @Configuration class. Which mean, that I have problem in Eclipse (my local problem) AND problem with gradle build task.</em> </p>
  
  <p><strong><em>UPDATE 2</strong>: Issue resolved by <a href="https://stackoverflow.com/questions/41741135/spring-boot-auto-configuration-for-datasource">Spring Boot auto configuration for datasource</a> Still I have no idea why dataSource wasn't able to autowire, but this way even better, cause using approach from link I can get values from properties and switch them using different environments. Thanks all for help.</em></p>
  
  <p>My code followed: 
  Application.java:</p>
  
  <pre><code> package com.my.package;
  
  import javax.sql.DataSource;
  
  import org.springframework.beans.factory.annotation.Autowired;
  import org.springframework.boot.SpringApplication;
  import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
  import org.springframework.boot.autoconfigure.SpringBootApplication;
  import org.springframework.context.annotation.AnnotationConfigApplicationContext;
  import org.springframework.context.annotation.ComponentScan;
  import org.springframework.context.support.AbstractApplicationContext;
  
  import com.my.package.MvcConfig;
  
  @SpringBootApplication
  @EnableAutoConfiguration
  @ComponentScan
  public class Application {
  
      @Autowired
      DataSource dataSource;
  
      @SuppressWarnings({ "unused", "resource" })
      public static void main(String[] args) {
          AbstractApplicationContext context = new AnnotationConfigApplicationContext(MvcConfig.class);
          SpringApplication.run(Application.class, args);
      }
  }
  </code></pre>
  
  <p>MvcConfig.java:</p>
  
  <pre><code>package com.my.package;
  
  
  import org.springframework.context.annotation.*;
  import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
  import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
  
  @Configuration
  public class MvcConfig extends WebMvcConfigurerAdapter {
  
  
      @Override
      public void addResourceHandlers(final ResourceHandlerRegistry registry) {
          registry.addResourceHandler("/resources/**").addResourceLocations("/resources/");
      }
  }
  </code></pre>
  
  <p>Application.properties:</p>
  
  <pre><code># ===============================
  # = DATA SOURCE
  # ===============================
  spring.datasource.url = jdbc:mysql://localhost:3306/benchmark
  spring.datasource.username = root
  spring.datasource.password =root
  spring.datasource.testWhileIdle = true
  spring.datasource.validationQuery = SELECT 1
  spring.datasource.driver-class-name=com.mysql.jdbc.Driver
  # ===============================
  # = JPA / HIBERNATE
  # ===============================
  spring.jpa.show-sql = false
  spring.jpa.hibernate.ddl-auto = update
  spring.jpa.hibernate.naming-strategy = org.hibernate.cfg.ImprovedNamingStrategy
  spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5Dialect
  </code></pre>
  
  <p>Build.gradle:</p>
  
  <pre><code>plugins {
    id "org.springframework.boot" version "1.5.6.RELEASE"
  }
  
  dependencies {
      compile group: 'org.springframework.boot', name: 'spring-boot-starter-data-jpa', version:'1.5.6.RELEASE'
      compile(group: 'org.springframework.boot', name: 'spring-boot-starter-websocket', version:'1.5.6.RELEASE') {
  exclude(module: 'spring-boot-starter-tomcat')
      }
      compile group: 'org.springframework.boot', name: 'spring-boot-starter-jetty', version:'1.5.6.RELEASE'
      compile group: 'org.springframework.boot', name: 'spring-boot-starter-jdbc', version:'1.5.6.RELEASE'
      compile group: 'org.springframework.boot', name: 'spring-boot-starter-actuator', version: '1.5.6.RELEASE'
      compile group: 'mysql', name: 'mysql-connector-java', version:'5.1.6'
  
      compile group: 'com.google.code.gson', name: 'gson', version:'2.8.1'
      compile(group: 'org.springframework', name: 'spring-core', version:'4.3.11.RELEASE') {
  exclude(module: 'commons-logging')
      }
      compile group: 'org.springframework', name: 'spring-jdbc', version:'4.3.8.RELEASE'
      compile group: 'javax.interceptor', name: 'javax.interceptor-api', version:'1.+'
      testCompile group: 'junit', name: 'junit', version:'4.11'
  }
  </code></pre>
  
  <p>And here is errors. When I'm trying to launch in eclipse:</p>
  
  <pre><code>12:40:08.155:WARN [main]: o.s.b.c.e.AnnotationConfigEmbeddedWebApplicationContext -
                  Exception encountered during context initialization - cancelling refresh attempt: org.springframework.context.ApplicationContextException: Unable to start embedded container; nested exception is java.lang.NoSuchMethodError: javax.servlet.ServletContext.addServlet(Ljava/lang/String;Ljavax/servlet/Servlet;)Ljavax/servlet/ServletRegistration$Dynamic;
  12:40:08.164:INFO [main]: o.s.b.a.l.AutoConfigurationReportLoggingInitializer -
  
  
  Error starting ApplicationContext. To display the auto-configuration report re-run your application with 'debug' enabled.
  12:40:08.169:ERROR[main]: o.s.boot.SpringApplication -
                  Application startup failed
  org.springframework.context.ApplicationContextException: Unable to start embedded container; nested exception is java.lang.NoSuchMethodError: javax.servlet.ServletContext.addServlet(Ljava/lang/String;Ljavax/servlet/Servlet;)Ljavax/servlet/ServletRegistration$Dynamic;
      at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.onRefresh(EmbeddedWebApplicationContext.java:137)
      at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:537)
      at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:122)
      at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:693)
      at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:360)
      at org.springframework.boot.SpringApplication.run(SpringApplication.java:303)
      at org.springframework.boot.SpringApplication.run(SpringApplication.java:1118)
      at org.springframework.boot.SpringApplication.run(SpringApplication.java:1107)
      at com.my.package.Application.main(Application.java:26)
  Caused by: java.lang.NoSuchMethodError: javax.servlet.ServletContext.addServlet(Ljava/lang/String;Ljavax/servlet/Servlet;)Ljavax/servlet/ServletRegistration$Dynamic;
      at org.springframework.boot.web.servlet.ServletRegistrationBean.onStartup(ServletRegistrationBean.java:191)
      at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.selfInitialize(EmbeddedWebApplicationContext.java:229)
      at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.access$000(EmbeddedWebApplicationContext.java:89)
      at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext$1.onStartup(EmbeddedWebApplicationContext.java:213)
      at org.springframework.boot.context.embedded.jetty.ServletContextInitializerConfiguration$Initializer.callInitializers(ServletContextInitializerConfiguration.java:83)
      at org.springframework.boot.context.embedded.jetty.ServletContextInitializerConfiguration$Initializer.doStart(ServletContextInitializerConfiguration.java:72)
      at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
      at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:131)
      at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:105)
      at org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:113)
      at org.eclipse.jetty.server.handler.ScopedHandler.doStart(ScopedHandler.java:120)
      at org.eclipse.jetty.server.handler.ContextHandler.startContext(ContextHandler.java:844)
      at org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:344)
      at org.eclipse.jetty.webapp.WebAppContext.startWebapp(WebAppContext.java:1501)
      at org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1463)
      at org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:785)
      at org.eclipse.jetty.servlet.ServletContextHandler.doStart(ServletContextHandler.java:261)
      at org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:545)
      at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
      at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:131)
      at org.eclipse.jetty.server.Server.start(Server.java:452)
      at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:105)
      at org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:113)
      at org.eclipse.jetty.server.Server.doStart(Server.java:419)
      at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
      at org.springframework.boot.context.embedded.jetty.JettyEmbeddedServletContainer.initialize(JettyEmbeddedServletContainer.java:104)
      at org.springframework.boot.context.embedded.jetty.JettyEmbeddedServletContainer.&lt;init&gt;(JettyEmbeddedServletContainer.java:82)
      at org.springframework.boot.context.embedded.jetty.JettyEmbeddedServletContainerFactory.getJettyEmbeddedServletContainer(JettyEmbeddedServletContainerFactory.java:561)
      at org.springframework.boot.context.embedded.jetty.JettyEmbeddedServletContainerFactory.getEmbeddedServletContainer(JettyEmbeddedServletContainerFactory.java:190)
      at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.createEmbeddedServletContainer(EmbeddedWebApplicationContext.java:164)
      at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.onRefresh(EmbeddedWebApplicationContext.java:134)
      ... 8 common frames omitted
  </code></pre>
  
  <p>When I run jar:</p>
  
  <pre><code>12:43:24.707:DEBUG[main]: o.s.b.d.LoggingFailureAnalysisReporter -
                                  Application failed to start due to an exception
  org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'javax.sql.DataSource' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {}
          at org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoMatchingBeanFound(DefaultListableBeanFactory.java:1493)
          at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1104)
          at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1066)
          at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:835)
          at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:741)
          at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:189)
          at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1193)
          at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1095)
          at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:513)
          at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:483)
          at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306)
          at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
          at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302)
          at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197)
          at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:372)
          at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1173)
          at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1067)
          at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:513)
          at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:483)
          at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306)
          at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
          at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302)
          at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197)
          at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1078)
          at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:857)
          at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:543)
          at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:122)
          at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:693)
          at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:360)
          at org.springframework.boot.SpringApplication.run(SpringApplication.java:303)
          at org.springframework.boot.SpringApplication.run(SpringApplication.java:1118)
          at org.springframework.boot.SpringApplication.run(SpringApplication.java:1107)
          at com.my.package.Application.main(Application.java:26)
          at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
          at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
          at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
          at java.lang.reflect.Method.invoke(Unknown Source)
          at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:48)
          at org.springframework.boot.loader.Launcher.launch(Launcher.java:87)
          at org.springframework.boot.loader.Launcher.launch(Launcher.java:50)
          at org.springframework.boot.loader.JarLauncher.main(JarLauncher.java:51)
  12:43:24.707:ERROR[main]: o.s.b.d.LoggingFailureAnalysisReporter -
  
  
  ***************************
  APPLICATION FAILED TO START
  ***************************
  
  Description:
  
  Parameter 0 of constructor in org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration required a bean of type 'javax.sql.DataSource' that could not be found.
          - Bean method 'dataSource' not loaded because @ConditionalOnProperty (spring.datasource.jndi-name) did not find property 'jndi-name'
          - Bean method 'dataSource' not loaded because @ConditionalOnBean (types: org.springframework.boot.jta.XADataSourceWrapper; SearchStrategy: all) did not find any beans
  </code></pre>
  
  <p>I've tried to play with dependencies, with annotations in application.java, but wasn't able to run this. I was thinking about this problem local, but I'm not sure where to look (I was reinstalling Gradle to 3.5 version not way back ago).</p>