- У меня есть класс java / spring-boot
@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();
}
}
- И есть файл конфигурации, который считывает данные из файла yml
@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;
}
}
Вопрос: когда я запускаю класс MyApplication в src / java / main, все круто.
НО: когда я запускаю этот класс в src / java / test, он выходит из строя
Ошибка запуска ApplicationContext. Чтобы отобразить отчет об условиях, перезапустите приложение с включенной отладкой.
2018-09-06 17: 14: 21.389 ОШИБКА 16515 --- [main] o.s.boot.SpringApplication: сбой запуска приложения
org.springframework.context.ApplicationContextException: невозможно запустить веб-сервер; Вложенным исключением является java.lang.NoClassDefFoundError: javax / servlet / http / HttpSessionIdListener
at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.onRefresh (ServletWebServerApplicationContext.java:155) ~ [spring-boot-2.0.4.RELEASE.jar: 2.0.4.RELEASE]
в org.springframework.context.support.AbstractApplicationContext.refresh (AbstractApplicationContext.java:544) ~ [spring-context-5.0.8.RELEASE.jar: 5.0.8.RELEASE]
at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh (ServletWebServerApplicationContext.java:140) ~ [spring-boot-2.0.4.RELEASE.jar: 2.0.4.RELEASE]
в org.springframework.boot.SpringApplication.refresh (SpringApplication.java:762) [spring-boot-2.0.4.RELEASE.jar: 2.0.4.RELEASE]
в org.springframework.boot.SpringApplication.refreshContext (SpringApplication.java:398) [spring-boot-2.0.4.RELEASE.jar: 2.0.4.RELEASE]
в org.springframework.boot.SpringApplication.run (SpringApplication.java:330) [spring-boot-2.0.4.RELEASE.jar: 2.0.4.RELEASE]
в org.springframework.boot.SpringApplication.run (SpringApplication.java:1258) [spring-boot-2.0.4.RELEASE.jar: 2.0.4.RELEASE]
в org.springframework.boot.SpringApplication.run (SpringApplication.java:1246) [spring-boot-2.0.4.RELEASE.jar: 2.0.4.RELEASE]
в MyApplication.main (MyApplication.java:19) [test-classes /: na]
Вызвано: java.lang.NoClassDefFoundError: javax / servlet / http / HttpSessionIdListener
в io.undertow.servlet.core.ApplicationListeners. (ApplicationListeners.java:62) ~ [undertow-servlet-1.4.25.Final.jar: 1.4.25.Final]
в io.undertow.servlet.spec.ServletContextImpl.ensureNotProgramaticListener (ServletContextImpl.java:875) ~ [undertow-servlet-1.4.25.Final.jar: 1.4.25.Final]
в io.undertow.servlet.spec.ServletContextImpl.getSessionCookieConfig (ServletContextImpl.java:648) ~ [undertow-servlet-1.4.25.Final.jar: 1.4.25.Final]
в io.undertow.servlet.core.DeploymentManagerImpl.handleDeploymentSessionConfig (DeploymentManagerImpl.java:622) ~ [undertow-servlet-1.4.25.Final.jar: 1.4.25.Final]
в io.undertow.servlet.core.DeploymentManagerImpl.deploy (DeploymentManagerImpl.java:167) ~ [undertow-servlet-1.4.25.Final.jar: 1.4.25.Final]
at org.springframework.boot.web.embedded.undertow.UndertowServletWebServerFactory.createDeploymentManager (UndertowServletWebServerFactory.java:284) ~ [spring-boot-2.0.4.RELEASE.jar: 2.0.4.RELE
at org.springframework.boot.web.embedded.undertow.UndertowServletWebServerFactory.getWebServer (UndertowServletWebServerFactory.java:208) ~ [spring-boot-2.0.4.RELEASE.jar: 2.0.4.RELEASE]
at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.createWebServer (ServletWebServerApplicationContext.java:179) ~ [spring-boot-2.0.4.RELEASE.jar: 2.0.4.RELEASE]
at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.onRefresh (ServletWebServerApplicationContext.java:152) ~ [spring-boot-2.0.4.RELEASE.jar: 2.0.4.RELEASE]
... 8 общих кадров опущено
Вызывается: java.lang.ClassNotFoundException: javax.servlet.http.HttpSessionIdListener
на java.net.URLClassLoader.findClass (URLClassLoader.java:381) ~ [na: 1.8.0_181]
at java.lang.ClassLoader.loadClass (ClassLoader.java:424) ~ [na: 1.8.0_181]at sun.misc.Launcher $ AppClassLoader.loadClass (Launcher.java:349) ~ [na: 1.8.0_181]
at java.lang.ClassLoader.loadClass (ClassLoader.java:357) ~ [na: 1.8.0_181]
... 17 общих кадров пропущено
P.S. У меня есть зависимость spring-boot-starter-web.
С @SpringBootTest я получил это:
org.springframework.context.ApplicationContextException: невозможно запустить веб-сервер; Вложенным исключением является org.springframework.context.ApplicationContextException: невозможно запустить ServletWebServerApplicationContext из-за отсутствия компонента ServletWebServerFactory.
at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.onRefresh (ServletWebServerApplicationContext.java:155) ~ [spring-boot-2.0.4.RELEASE.jar: 2.0.4.RELEASE]
в org.springframework.context.support.AbstractApplicationContext.refresh (AbstractApplicationContext.java:544) ~ [spring-context-5.0.8.RELEASE.jar: 5.0.8.RELEASE]
at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh (ServletWebServerApplicationContext.java:140) ~ [spring-boot-2.0.4.RELEASE.jar: 2.0.4.RELEASE]
в org.springframework.boot.SpringApplication.refresh (SpringApplication.java:762) [spring-boot-2.0.4.RELEASE.jar: 2.0.4.RELEASE]
в org.springframework.boot.SpringApplication.refreshContext (SpringApplication.java:398) [spring-boot-2.0.4.RELEASE.jar: 2.0.4.RELEASE]
в org.springframework.boot.SpringApplication.run (SpringApplication.java:330) [spring-boot-2.0.4.RELEASE.jar: 2.0.4.RELEASE]
в org.springframework.boot.SpringApplication.run (SpringApplication.java:1258) [spring-boot-2.0.4.RELEASE.jar: 2.0.4.RELEASE]
в org.springframework.boot.SpringApplication.run (SpringApplication.java:1246) [spring-boot-2.0.4.RELEASE.jar: 2.0.4.RELEASE]
в MyApplication.main (MyApplication.java:19) [test-classes /: na]
Вызвано: org.springframework.context.ApplicationContextException: невозможно запустить ServletWebServerApplicationContext из-за отсутствия компонента ServletWebServerFactory.
at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.getWebServerFactory (ServletWebServerApplicationContext.java:204) ~ [spring-boot-2.0.4.RELEASE.jar: 2.0.4.RELEASE]
at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.createWebServer (ServletWebServerApplicationContext.java:178) ~ [spring-boot-2.0.4.RELEASE.jar: 2.0.4.RELEASE]
at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.onRefresh (ServletWebServerApplicationContext.java:152) ~ [spring-boot-2.0.4.RELEASE.jar: 2.0.4.RELEASE]
... 8 общих кадров пропущено