Я устал исследовать этот вопрос и не могу найти на него правильного ответа. Собственно, я не нашел никого, кто использовал бы Java 11 и Spring. Мой JSP не загружается, это просто так. Немного информации о моем проекте:
Spring Boot version: 2.0.5.RELEASE
Java version: 11
Gradle: 4.10.2
Это мои свойства application.yml:
server:
contextPath: /mypath
port: 9012
display-name: my app
error:
whitelabel:
enabled: true
tomcat:
compression: on
compressableMimeTypes: application/json,application/xml,text/html,text/xml,text/plain
# springboot 1.3+ compression
# compression:
# enabled: true
# mime-types: application/json,application/xml,text/html,text/xml,text/plain
# enable HTTPS when running behind a proxy server
remote_ip_header: x-forwarded-for
protocol_header: x-forwarded-proto
use-forward-headers: true
# session timeout
session:
# spring time out set to 2hrs.
cookie:
max-age: 7200
timeout: 7200
# enabling SSL/HTTPS with spring boot
ssl:
enabled: true
key-store: /mykeystorepath/keystore.ks
key-store-password: password
key-store-type: JKS
key-alias: selfsigned
http:
mappers:
jsonPrettyPrint: true
multipart:
maxFileSize: 500MB
maxRequestSize: 500MB
fileSizeThreshold: 0
spring:
application:
name: appname
jmx:
enabled: true
default-domain: ${spring.application.name}
http:
# enable and force http encoding support.
encoding:
enabled: true
charset: UTF-8
force: true
mvc:
favicon:
enabled: true
view:
prefix: /WEB-INF/jsp/
suffix: .jsp
management:
server:
port: 9512
endpoints:
web:
base-path: /manage
swagger:
enable: false
endpoints:
shutdown:
enabled: true
#logging:
# level:
# org:
# springframework:
# web: DEBUG
Мои файлы jsp находятся в:
/parent-project-folder/my-app/src/main/webapp/WEB-INF/jsp/
Мой основной класс:
@SpringBootApplication(exclude = { SecurityAutoConfiguration.class })
public class Application extends SpringBootServletInitializer {
/** The log. */
private static final Logger LOG = LoggerFactory.getLogger(Application.class);
/**
* The main method.
*
* @param args the arguments
*/
public static void main(String[] args) {
SpringApplication springApplication = new SpringApplication(Application.class);
springApplication.addListeners(new ApplicationPidFileWriter(System.getProperty("user.home") + File.separator + "app.pid"));
springApplication.run(args);
LOG.info("--------------------------------------------------------------");
LOG.info("--------- application startup complete --------");
LOG.info("--------------------------------------------------------------");
}
/*
* (non-Javadoc)
*
* @see org.springframework.boot.web.support.SpringBootServletInitializer#configure(org.springframework.boot.builder.SpringApplicationBuilder)
*/
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(Application.class);
}
}
Я даже пытался поместить свою папку WEB-INF в / src / main / resources.
Далее это список моих зависимостей (просто черновик копипаста):
apply plugin: 'war'
compile 'javax.servlet:jstl:1.2'
classpath 'gradle.plugin.com.gorylenko.gradle-git-properties:gradle-git-properties:1.4.17'
classpath "org.springframework.boot:spring-boot-gradle-plugin:2.0.5"
classpath "com.netflix.nebula:gradle-ospackage-plugin:4.4.0"
classpath "org.jfrog.buildinfo:build-info-extractor-gradle:4.5.4"
classpath 'com.github.ben-manes:gradle-versions-plugin:0.17.0'
classpath "gradle.plugin.com.github.spotbugs:spotbugs-gradle-plugin:1.6.4"
classpath 'com.github.samueltbrown:gradle-cucumber-plugin:0.5'
compile 'org.glassfish.corba:glassfish-corba-omgapi:4.2.0-b004'
compile 'org.jboss.spec.javax.xml.soap:jboss-saaj-api_1.3_spec:1.0.6.Final'
runtime 'org.springframework.boot:spring-boot-properties-migrator'
compile 'javax.xml.bind:jaxb-api:2.3.0'
compile 'com.sun.xml.bind:jaxb-core:2.3.0.1'
compile 'com.sun.xml.bind:jaxb-impl:2.3.0.1'
compile 'javax.activation:activation:1.1.1'
runtime 'javax.activation:javax.activation-api:1.2.0'
compile 'javax.inject:javax.inject:1'
compile 'org.apache.commons:commons-lang3:3.7'
compile "org.springframework.boot:spring-boot-starter-actuator"
compile "org.springframework.boot:spring-boot-starter-security"
compile (group: 'org.owasp.esapi', name: 'esapi', version:'2.1.0.1') {
exclude group: 'org.apache.xmlgraphics'
}
compile "com.google.code.gson:gson:${gsonVersion}"
compile 'taglibs:standard:1.1.2'
compile 'org.apache.tomcat.embed:tomcat-embed-jasper'
compile 'org.springframework.boot:spring-boot'
compile "org.springframework.cloud:spring-cloud-starter-config"
compile "org.springframework.boot:spring-boot-starter-web"
compile "org.springframework.boot:spring-boot-starter-tomcat"
compile "org.springframework.boot:spring-boot-starter-logging"
compile 'com.mangofactory:swagger-springmvc:1.0.2'
runtime group: 'ph.samson.logback', name: 'logback-luhn-mask', version:'1.0.1'
compile 'org.apache.xmlgraphics:batik-css:1.10'
compile 'commons-beanutils:commons-beanutils-core:1.8.3'
compile 'commons-fileupload:commons-fileupload:1.3.3'
compile 'xalan:xalan:2.7.2'
compile 'commons-httpclient:commons-httpclient:3.1'
compile 'org.owasp.antisamy:antisamy:1.5.7'
У меня в корне есть файл login.jsp, который должен быть у меня как https: // локальный: 9012 / mypath / login.html, и он не загружается.
ОБНОВЛЕНИЕ в пятницу, 23 ноября
Я добиваюсь некоторого прогресса. Я расскажу больше о своем приложении. Первоначально это приложение было написано с использованием Java 1.8 и Spring 1.5.9.RELEASE и спецификаций для моей разработки. Раньше у приложения был контроллер GET по этому пути: «/ login». И вот здесь самая сложная часть: всякий раз, когда вы нажимаете URL-адрес «https://www.myapp.com/login.htm», каким-то образом / каким-то образом, чего я не понимаю, Spring удалось отправить запрос на «login.htm» в контроллер «/ login». Я не уверен, как это произошло с дополнительным ".htm".
Теперь, когда я использую Java 11 и Spring 2.1.0.RELEASE, это больше не работает. Если я нажму «/ войти», он перейдет к контроллеру. Но мне нужно сделать прозрачную миграцию, я не могу изменить логику. Это приложение обслуживает запросы, и клиентская сторона уже много лет использует /login.htm. Мне нужно, чтобы "/login.htm" переходил в "/ login".
Spring Boot 2.0.5 не полностью поддерживает Java 11. Spring 5.1 поддерживает. Дождитесь Spring Boot 2.1 GA или возьмите версию SNAPSHOT. Скорее всего, после этого ваша проблема будет решена.
@MikhailKholodkov спасибо, немного разберусь. Я читал несколько форумов, и, как вы сказали, похоже, что java 11 еще не полностью поддерживается.
@ want2learn, в трассировке стека вообще нет ошибок. Только информационные сообщения. Это действительно потрясающе.
@Perimosh Пожалуйста, смотрите stackoverflow.com/a/53072662/3523579
Spring 2.0.5 имеет незаконный доступ в java 11. Мне пришлось исключить артефакт spring-boot-start-logging. Это заставило меня запустить автономную банку, но я все еще не могу заставить ее работать с tomcat 9 и eclipse.
Народ: Немного обновил свой вопрос. Спасибо всем! @MikhailKholodkov
@MarkD, пожалуйста, посмотрите
@ want2learn, пожалуйста, посмотрите





Похоже, вы запускаете свое приложение в Tomcat. Поэтому проверьте версию Java, которую он использует. Если версия меньше, чем версия java приложения, tomcat просто не запускает ее.
проследите ошибку пожалуйста