Как мне изменить версию Tomcat войны в проекте загрузки Spring? - PullRequest
0 голосов
/ 10 июля 2020

Как я могу изменить версию Tomcat войны в проекте загрузки Spring

Я создал проект Spring с Maven. Я хотел бы изменить версию встроенного tomcat.

Как мне изменить pom. xml или s / t?

pom. xml: я создал весенний проект с Maven. Я хотел бы изменить версию встроенного кота.

Как мне изменить pom. xml или s / t?

pom. xml:

<properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <tomcat.version>8.5.32</tomcat.version>
</properties>
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.3.1.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.xxxxx</groupId>
    <artifactId>yyyy</artifactId>
    <version>0.0.1</version>
    <packaging>war</packaging>
    <name>xxxxx</name>
    <description>Demo project for Spring Boot</description>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
        <tomcat.version>8.5.32</tomcat.version>
    </properties>
***************************
APPLICATION FAILED TO START
***************************

Description:

An attempt was made to call a method that does not exist. The attempt was made from the following location:

    org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory.getWebServer(TomcatServletWebServerFactory.java:175)

The following method did not exist:

    org.apache.tomcat.util.modeler.Registry.disableRegistry()V
    
    
     jar:file:/C:/Users/moto/.m2/repository/org/apache/tomcat/embed/tomcat-embed-core/8.5.35/tomcat-embed-core-8.5.35.jar!/org/apache/tomcat/util/modeler/Registry.class

The class hierarchy was loaded from the following locations:

    org.apache.tomcat.util.modeler.Registry: file:/C:/Users/moto/.m2/repository/org/apache/tomcat/embed/tomcat-embed-core/8.5.35/tomcat-embed-core-8.5.35.jar


Action:

Correct the classpath of your application so that it contains a single, compatible version of org.apache.tomcat.util.modeler.Registry

Ответы [ 2 ]

1 голос
/ 10 июля 2020

Когда вы используете spring-boot-stater-parent как есть, вы можете использовать свойство tomcat.version для управления версией Tomcat. Вы уже сделали это в своем pom.xml файле:

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    <java.version>1.8</java.version>
    <tomcat.version>8.5.32</tomcat.version>
</properties>

Короче говоря, вы уже меняете версию Tomcat, которую использует Spring Boot.

По умолчанию Spring Boot 2.3 .1 использует Tomcat 9.0.x. Если вы удалите <tomcat.version>8.5.32</tomcat.version> из файла pom, следует использовать Tomcat 9.0.x, и тогда ваше приложение сможет запуститься. Если вы хотите настроить эту версию, вам следует сохранить свойство tomcat.version, но использовать версию, с которой совместима Spring Boot. Рекомендуется последняя версия Tomcat 9.0.x. Последние выпуски 8.5.x также могут работать.

0 голосов
/ 10 июля 2020

Если эффективный файл POM maven показывает переопределенную версию tomcat, то следующим шагом для отладки этой проблемы будет удаление org/apache/tomcat/embed в папке .m2/repository вручную и повторная сборка проекта. не работает, попробуйте добавить зависимости вручную, поскольку вы пытаетесь использовать старую версию tomcat (не рекомендуется, но для отладки)

org.apache.tomcat.embed tomcat-embed-core
org.apache.tomcat.embed tomcat-embed-el
org.apache.tomcat.embed tomcat-embed-jasper
org.apache.tomcat.embed tomcat-embed-websocket
...