Как запустить встроенный tomcat с пружинной загрузкой с плитками в eclipse?

У меня есть приложение с весенней загрузкой, упакованное в виде исполняемого файла warfile, поддерживающее встроенный tomcat с spring mvc, jsp и плитками.

При запуске встроенного веб-приложения в оболочке с помощью java -jar app.war служба успешно работает. Вместо этого, когда я пытаюсь запустить конфигурацию запуска внутри eclipse, sprint-boot не может завершить инициализацию плиток, за этим исключением:

Exception in thread "main" org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'tilesConfigurer' defined in class path resource [au/com/inspiredgroup/config/MvcConfiguration.class]: Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: No URL for class path resource [WEB-INF/tiles.xml]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1566)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:539)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:476)
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:303)
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:299)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:762)
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:757)
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:480)
    at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:118)
    at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:688)
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:321)
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:958)
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:947)
    at au.com.inspiredgroup.Application.main(Application.java:86)
Caused by: java.lang.IllegalArgumentException: No URL for class path resource [WEB-INF/tiles.xml]
    at org.springframework.web.servlet.view.tiles3.SpringWildcardServletTilesApplicationContext.getResources(SpringWildcardServletTilesApplicationContext.java:96)
    at org.springframework.web.servlet.view.tiles3.TilesConfigurer$SpringTilesContainerFactory.getSources(TilesConfigurer.java:306)
    at org.apache.tiles.factory.BasicTilesContainerFactory.createLocaleDefinitionDao(BasicTilesContainerFactory.java:182)
    at org.apache.tiles.factory.BasicTilesContainerFactory.createDefinitionsFactory(BasicTilesContainerFactory.java:137)
    at org.springframework.web.servlet.view.tiles3.TilesConfigurer$SpringTilesContainerFactory.createDefinitionsFactory(TilesConfigurer.java:354)
    at org.apache.tiles.factory.BasicTilesContainerFactory.createContainer(BasicTilesContainerFactory.java:86)
    at org.springframework.web.servlet.view.tiles3.TilesConfigurer$SpringTilesContainerFactory.createContainer(TilesConfigurer.java:297)
    at org.apache.tiles.startup.AbstractTilesInitializer.createContainer(AbstractTilesInitializer.java:114)
    at org.apache.tiles.startup.AbstractTilesInitializer.initialize(AbstractTilesInitializer.java:64)
    at org.springframework.web.servlet.view.tiles3.TilesConfigurer.afterPropertiesSet(TilesConfigurer.java:271)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1625)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1562)
    ... 15 more
Caused by: java.io.FileNotFoundException: class path resource [WEB-INF/tiles.xml] cannot be resolved to URL because it does not exist
    at org.springframework.core.io.ClassPathResource.getURL(ClassPathResource.java:187)
    at org.springframework.web.servlet.view.tiles3.SpringWildcardServletTilesApplicationContext.getResources(SpringWildcardServletTilesApplicationContext.java:91)
    ... 26 more

Это конфигурация MVC:

@EnableWebMvc
@Configuration
public class MvcConfiguration extends WebMvcConfigurerAdapter {

    /**
     * Basic setup for JSP views.
     */
    @Bean(name = "viewResolver")
    public InternalResourceViewResolver configureInternalViewResolver() {
        final InternalResourceViewResolver resolver = new InternalResourceViewResolver();
        resolver.setPrefix(PREFIX);
        resolver.setSuffix(SUFFIX);
        resolver.setOrder(1);
        return resolver;
    }

    @Bean
    public TilesViewResolver tilesViewResolver() {
        final TilesViewResolver tilesViewResolver = new TilesViewResolver();
        tilesViewResolver.setOrder(0);
        return tilesViewResolver;
    }

    @Bean
    public TilesConfigurer tilesConfigurer() {
        final TilesConfigurer configurer = new TilesConfigurer();
        configurer.setDefinitions(new String[] { "classpath:/WEB-INF/tiles.xml" });
        return configurer;
    }
    [...]
}

Средство запуска в eclipse настроено как обычное приложение Java.


person guido    schedule 22.01.2015    source источник
comment
Звучит как проблема с затмением, а не с пружиной/плиткой. Я думаю, что app.war включает в себя файлtiles.xml, а путь к классам, который использует eclipse, — нет.   -  person mck    schedule 23.01.2015
comment
@mck да, определенно; как ни странно, вчера я запустил сервер в eclipse после сбоя eclipse; затем он снова перестал работать после первого mvn package.   -  person guido    schedule 24.01.2015
comment
Я сталкиваюсь с той же проблемой в интеллектуальной идее   -  person Ravikumar Rathod    schedule 07.09.2017
comment
я настраиваю плитки 3 с весенней загрузкой ... он работает один, но когда я работаю в нескольких модулях, я сталкиваюсь с этим, путь не может решить проблему   -  person Ravikumar Rathod    schedule 07.09.2017


Ответы (1)


Это произошло для импортированного проекта, для которого настройки eclipse не были переданы в репозиторий системы управления версиями (понятно, что, на мой взгляд, чаще всего это разумно (не-) делать); это могло быть из-за этого, а может и нет, в любом случае использование архетипа maven для создания нового проекта не воспроизводит проблему.

Чтобы исправить мою настройку в eclipse, мне пришлось отредактировать конфигурацию запуска (для работы как Java Application), перейти на вкладку пути к классам и нажать кнопку «Дополнительно...», затем «Добавить папку» и перейти к добавлению папки /src/main/webapp , Он будет добавлен в «Записи пользователей».

введите здесь описание изображения

person guido    schedule 18.02.2015
comment
ну, мне пришлось настроить новую среду разработки на моем ноутбуке, и это было воспроизведено с тем же проектом в eclipse 4.4.3 (выпуск spring-boot 1.2.1). и эта страница помогла! - person guido; 14.04.2015