代码之家  ›  专栏  ›  技术社区  ›  Cyril Krasnobaiev

弹簧靴。类只在src/java/main中运行,在src/java/test中有异常

  •  0
  • Cyril Krasnobaiev  · 技术社区  · 6 年前
    @SpringBootApplication
    @ComponentScan(value = "ignore")
    @RunWith(SpringRunner.class)
    public class MyApplication {
       @Bean
       YAMLConfig myeadFromYMLFile() {
          return new YAMLConfig();
       }
       public static void main(String[] args) throws InterruptedException {
          ConfigurableApplicationContext context = 
             SpringApplication.run(MyApplication.class, args);
          YAMLConfig myBean = context.getBean(YAMLConfig.class);
          myBean.doSomething();
          myBean.printApi();
       }
    }
    
    @Configuration
    @EnableConfigurationProperties
    public class YAMLConfig {
       @Value("${refresh.rate}")
       private int refreshRate;
       @Value("${datasource.apiUrl}")
       private String apiUrl;
       public void doSomething() {
          System.out.printf("Refresh Rate : %s%n", refreshRate);
       }
       public void printApi() {
          System.out.printf("Refresh Rate : %s%n", apiUrl);
       }
       public String getApiUrl() {
          return apiUrl;
       }
    }
    

    问:当我在src/java/main中运行类MyApplication时,一切都很酷。

    启动ApplicationContext时出错。要显示条件报告,请在启用“调试”的情况下重新运行应用程序。 2018-09-06 17:14:21.389错误16515---[main]o.s。boot.spring应用程序:应用程序运行失败 org.springframework.context环境.ApplicationContextException:无法启动web服务器;嵌套异常为java.lang.NoClassDefFoundError文件:javax/servlet/http/HttpSessionIdListener 在org.springframework.context环境.support.AbstractApplicationContext.刷新(AbstracApplicationContext.java:544)~[spring-context-5.0.8。发布.jar:5.0.8.释放] 在org.springframework.boot启动.web.servlet.context.ServletWebServ服务eApplicationContext.refresh文件(ServletWebServ)eApplicationContext.java:140)~[spring-boot-2.0.4。发布.jar:2.0.4.释放] 在org.springframework.boot启动.SpringApplication.refresh文件(SpringApplication.java:762)[弹簧靴-2.0.4。发布.jar:2.0.4.释放] 在org.springframework.boot启动.SpringApplication.refreshContext(SpringApplication.java:398)[弹簧靴-2.0.4。发布.jar:2.0.4.释放] 在org.springframework.boot启动.SpringApplication.run(SpringApplication.java:330)[弹簧靴-2.0.4。发布.jar:2.0.4.释放] 在org.springframework.boot启动.SpringApplication.run(SpringApplication.java:1246)[弹簧靴-2.0.4。发布.jar:2.0.4.释放] 原因:java.lang.NoClassDefFoundError文件:javax/servlet/http/HttpSessionIdListener 在io.undertow.servlet.规范ServletContextImpl.EnsurentProgrammaticListener(ServletContextImpl.java:875)~[undertow-servlet-1.4.25。最终.jar:1.4.25.最终版本] 在io.undertow.servlet.规范ServletContextImpl.getSessionCookieConfig(ServletContextImpl.java:648)~[undertow-servlet-1.4.25。最终.jar:1.4.25.最终版本] 在io.undertow.servlet.核心.DeploymentManagerImpl.部署(D)eploymentManagerImpl.java:167)~[undertow-servlet-1.4.25。最终.jar:1.4.25.最终版本] 在org.springframework.boot启动.web.embedded.undertow网站.下拖器vletWebServerFactory.createDeploymentManager(下拖索)vletWebServerFactory.java:284)~[spring-boot-2.0.4。发布.jar:2.0.4.释放] 在org.springframework.boot启动.web.servlet.context.ServletWebServ服务eApplicationContext.CreateWeb服务器(ServletWebServ)eApplicationContext.java:179)~[spring-boot-2.0.4。发布.jar:2.0.4.释放] 在org.springframework.boot启动.web.servlet.context.ServletWebServ服务eApplication上下文.onRefresh(ServletWebServ)erApplicationContext.java:152)~[spring-boot-2.0.4。发布.jar:2.0.4.释放] 原因:java.lang.ClassNotFoundException类: javax.servlet.http.HttpSessionIdListener文件 在java.lang.ClassLoader类加载器.loadClass类(ClassLoader.java:424)~[na:1.8.0µ] 在sun.misc.启动器$AppClassLoader.loadClass类(Launcher.java:349)~[na:1.8.0µ] 在java.lang.ClassLoader类加载器.loadClass类(ClassLoader.java:357)~[na:1.8.0µ] ... 省略17个公共框架

    另外,我有springbootstarterweb依赖项。 通过@SpringBootTest,我得到了:

    org.springframework.context环境.ApplicationContextException:无法启动web服务器;嵌套异常为org.springframework.context环境.ApplicationContextException:由于缺少ServletWebServerFactory bean,无法启动ServletWebServerApplicationContext。 在org.springframework.boot启动.web.servlet.context.ServletWebServ服务eApplication上下文.onRefresh(ServletWebServ)eApplicationContext.java:155)~[spring-boot-2.0.4。发布.jar:2.0.4.释放] 在org.springframework.boot启动.web.servlet.context.ServletWebServ服务eApplicationContext.refresh文件(ServletWebServ)eApplicationContext.java:140)~[spring-boot-2.0.4。发布.jar:2.0.4.释放] 在org.springframework.boot启动.SpringApplication.refresh文件(SpringApplication.java:762)[弹簧靴-2.0.4。发布.jar:2.0.4.释放] 在org.springframework.boot启动.SpringApplication.refreshContext(SpringApplication.java:398)[弹簧靴-2.0.4。发布.jar:2.0.4.释放] 在org.springframework.boot启动.SpringApplication.run(SpringApplication.java:1258)[弹簧靴-2.0.4。发布.jar:2.0.4.释放] 在org.springframework.boot启动.SpringApplication.run(SpringApplication.java:1246)[弹簧靴-2.0.4。发布.jar:2.0.4.释放] 在我的应用程序.main(MyApplication.java:19)[测试类别/:na] 原因:org.springframework.context环境.ApplicationContextException:由于缺少ServletWebServerFactory bean,无法启动ServletWebServerApplicationContext。 在org.springframework.boot启动.web.servlet.context.ServletWebServ服务eApplicationContext.CreateWeb服务器(ServletWebServ)eApplicationContext.java:178)~[spring-boot-2.0.4。发布.jar:2.0.4.释放] 在org.springframework.boot启动.web.servlet.context.ServletWebServ服务eApplication上下文.onRefresh(ServletWebServ)erApplicationContext.java:152)~[spring-boot-2.0.4。发布.jar:2.0.4.释放] ... 省略8个公共框架

    1 回复  |  直到 6 年前
        1
  •  0
  •   Cyril Krasnobaiev    6 年前