2016-04-27 2 views
1

Есть ли простой способ создания проекта Spring Boot Mvc для представлений .jsp?Spring Boot JSP

Я попытался создать проект аналогично проекту Spring Boot Rest, но для меня это не так просто. Я пытался использовать official Spring Boot Mvc jsp sample, но когда я пытаюсь запустить это я получаю исключение, как это:

org.springframework.beans.factory.BeanDefinitionStoreException: Failed to parse configuration class [sample.jsp.SampleWebJspApplication]; nested exception is java.lang.IllegalStateException: Failed to introspect annotated methods on class org.springframework.boot.context.web.SpringBootServletInitializer 
    at org.springframework.context.annotation.ConfigurationClassParser.parse(ConfigurationClassParser.java:187) ~[spring-context-4.3.0.BUILD-20160427.201731-353.jar:4.3.0.BUILD-SNAPSHOT] 
    at org.springframework.context.annotation.ConfigurationClassPostProcessor.processConfigBeanDefinitions(ConfigurationClassPostProcessor.java:321) ~[spring-context-4.3.0.BUILD-20160427.201731-353.jar:4.3.0.BUILD-SNAPSHOT] 
    at org.springframework.context.annotation.ConfigurationClassPostProcessor.postProcessBeanDefinitionRegistry(ConfigurationClassPostProcessor.java:243) ~[spring-context-4.3.0.BUILD-20160427.201731-353.jar:4.3.0.BUILD-SNAPSHOT] 
    at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanDefinitionRegistryPostProcessors(PostProcessorRegistrationDelegate.java:273) ~[spring-context-4.3.0.BUILD-20160427.201731-353.jar:4.3.0.BUILD-SNAPSHOT] 
    at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(PostProcessorRegistrationDelegate.java:98) ~[spring-context-4.3.0.BUILD-20160427.201731-353.jar:4.3.0.BUILD-SNAPSHOT] 
    at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:681) ~[spring-context-4.3.0.BUILD-20160427.201731-353.jar:4.3.0.BUILD-SNAPSHOT] 
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:523) ~[spring-context-4.3.0.BUILD-20160427.201731-353.jar:4.3.0.BUILD-SNAPSHOT] 
    at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:765) [spring-boot-1.4.0.BUILD-20160427.203128-289.jar:1.4.0.BUILD-SNAPSHOT] 
    at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:370) [spring-boot-1.4.0.BUILD-20160427.203128-289.jar:1.4.0.BUILD-SNAPSHOT] 
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:314) [spring-boot-1.4.0.BUILD-20160427.203128-289.jar:1.4.0.BUILD-SNAPSHOT] 
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1182) [spring-boot-1.4.0.BUILD-20160427.203128-289.jar:1.4.0.BUILD-SNAPSHOT] 
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1171) [spring-boot-1.4.0.BUILD-20160427.203128-289.jar:1.4.0.BUILD-SNAPSHOT] 
    at sample.jsp.SampleWebJspApplication.main(SampleWebJspApplication.java:33) [classes/:na] 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_65] 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_65] 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_65] 
    at java.lang.reflect.Method.invoke(Method.java:497) ~[na:1.8.0_65] 
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:144) [idea_rt.jar:na] 
Caused by: java.lang.IllegalStateException: Failed to introspect annotated methods on class org.springframework.boot.context.web.SpringBootServletInitializer 
    at org.springframework.core.type.StandardAnnotationMetadata.getAnnotatedMethods(StandardAnnotationMetadata.java:163) ~[spring-core-4.3.0.BUILD-20160427.201731-353.jar:4.3.0.BUILD-SNAPSHOT] 
    at org.springframework.context.annotation.ConfigurationClassParser.doProcessConfigurationClass(ConfigurationClassParser.java:300) ~[spring-context-4.3.0.BUILD-20160427.201731-353.jar:4.3.0.BUILD-SNAPSHOT] 
    at org.springframework.context.annotation.ConfigurationClassParser.processConfigurationClass(ConfigurationClassParser.java:237) ~[spring-context-4.3.0.BUILD-20160427.201731-353.jar:4.3.0.BUILD-SNAPSHOT] 
    at org.springframework.context.annotation.ConfigurationClassParser.parse(ConfigurationClassParser.java:204) ~[spring-context-4.3.0.BUILD-20160427.201731-353.jar:4.3.0.BUILD-SNAPSHOT] 
    at org.springframework.context.annotation.ConfigurationClassParser.parse(ConfigurationClassParser.java:173) ~[spring-context-4.3.0.BUILD-20160427.201731-353.jar:4.3.0.BUILD-SNAPSHOT] 
    ... 17 common frames omitted 
Caused by: java.lang.NoClassDefFoundError: javax/servlet/ServletContext 
    at java.lang.Class.getDeclaredMethods0(Native Method) ~[na:1.8.0_65] 
    at java.lang.Class.privateGetDeclaredMethods(Class.java:2701) ~[na:1.8.0_65] 
    at java.lang.Class.getDeclaredMethods(Class.java:1975) ~[na:1.8.0_65] 
    at org.springframework.core.type.StandardAnnotationMetadata.getAnnotatedMethods(StandardAnnotationMetadata.java:152) ~[spring-core-4.3.0.BUILD-20160427.201731-353.jar:4.3.0.BUILD-SNAPSHOT] 
    ... 21 common frames omitted 
Caused by: java.lang.ClassNotFoundException: javax.servlet.ServletContext 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381) ~[na:1.8.0_65] 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424) ~[na:1.8.0_65] 
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331) ~[na:1.8.0_65] 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ~[na:1.8.0_65] 
    ... 25 common frames omitted 
+0

Попробуйте найти который банку делает 'ServletContext' находится и попытаться импортировать его и снова запустите. –

+0

Возможно, причиной того, что баня была сломана во время ее загрузки. –

+0

Идите и найдите его, затем попробуйте открыть его почтой или другим инструментом uncompress и убедитесь, что он полностью загружен. –

ответ

1

Любой шанс вы работаете в IntelliJ? Я заметил эту проблему, а также и решение удалить <scope>provided</scope> от зависимости пружинных загрузки стартера TOMCAT, как это:

<dependency> 
    <groupId>org.springframework.boot</groupId> 
    <artifactId>spring-boot-starter-tomcat</artifactId> 
    <!-- <scope>provided</scope> --> 
</dependency> 

Там ошибка в IntelliJ, в результате чего она не добавлять предоставленные зависимости к пути к классам при запуске локально.

EDIT: Удаление предоставленной области может привести к проблемам при запуске в контейнере сервлетов, поэтому будьте осторожны, объясните, как исправить это можно в Run Spring-boot's main using IDE.

1

У меня были схожие проблемы, см. Ссылку на github. jsf-spring-boot-2.1.6 родительское использование весенней загрузки 1.4.0 все сработало и проблем нет, верьте или нет!

https://github.com/joinfaces/joinfaces-example-war

1

Как я знаю, весна загрузки технологии страницы по умолчанию thymeleaf и официальный рекомендует нам использовать его. Если вы хотите использовать jsp, вы можете выполнить некоторую настройку.

Следующие шаги могут быть полезными.

1. Creating src/main/webapp/WEB-INF/jsp folder. 
2. Modify application.properties file. 

spring.mvc.view.prefix: /WEB-INF/jsp/ 
spring.mvc.view.suffix: .jsp 

3.Add jar support for jsp. Вы можете добавить следующий maven-репозиторий в файл проекта pom.xml.

<dependency> 
    <groupId>org.apache.tomcat.embed</groupId> 
    <artifactId>tomcat-embed-jasper</artifactId> 
    <scope>provided</scope> 
</dependency> 

<dependency> 
    <groupId>javax.servlet</groupId> 
    <artifactId>jstl</artifactId> 
</dependency> 

Надеюсь, что это поможет. Любые проблемы, пожалуйста, не стесняйтесь, дайте мне знать.

0

Используйте конфигурацию запуска maven с spring-boot:run как значение «Командная строка».

Успехов

0

Добавить ниже зависимостей в файл POM:

<dependency> 
    <groupId>org.apache.tomcat.embed</groupId> 
    <artifactId>tomcat-embed-jasper</artifactId> 
</dependency> 
<dependency> 
    <groupId>javax.servlet</groupId> 
    <artifactId>jstl</artifactId> 
</dependency> 

Создание ниже структуры /SRC/основные/ресурсы/META-INF/ресурсы

сейчас вышеуказанная папка эквивалентна вашей папке WebContent. Внутри этого можно поставить статическое содержимое. Добавить WEB-INF папка здесь и сейчас вы можете разместить свои JSP-файлы, как и любой другой веб-проект.

В ваших application.properties файл добавьте ниже:

spring.mvc.view.prefix =/WEB-INF/JSP/

spring.mvc.view.suffix =.JSP

0

Добавление зависимостей в POM файле ниже

<dependency> 
     <groupId>org.apache.tomcat.embed</groupId> 
     <artifactId>tomcat-embed-jasper</artifactId> 
     <scope>provided</scope> 
    </dependency> 

Полный код имеющееся на GitHub связи нажмите here

Скачать код и импортировать затмение/STS с помощью выходящего из Maven проекта

Далее для запуска проект. Перейти в пакет на com.chandrakumar.test.demo.

имеет «DemoApplication.java» и щелкните правой кнопкой мыши и выберите запустить в выбрать приложение Java.

Адресной строке браузера "http://localhost:8080/".

1

Этот блог post объясняет, какие шаги вы должны предпринять и почему. Это довольно легко, и я сам это исправил.

TD: LR

Добавить зависимостями Maven

Для того чтобы включить поддержку JSP, нам нужно добавить несколько зависимостей в нашем новом проекте в pom.xml.

<dependency> 
<groupId>org.apache.tomcat.embed</groupId> 
<artifactId>tomcat-embed-jasper</artifactId> 
</dependency> 
<dependency> 
<groupId>javax.servlet</groupId> 
<artifactId>jstl</artifactId> 
</dependency> 

Поместите шаблоны JSP под SRC/основные/ресурсы/META-INF/ресурсы/WEB-INF/JSP/

Смежные вопросы