【问题标题】:java.lang.NoSuchMethodError: org.apache.tomcat.util.res.StringManager.getManager with tomcat in Spring hetosjava.lang.NoSuchMethodError: org.apache.tomcat.util.res.StringManager.getManager 与 Spring hetos 中的 tomcat
【发布时间】:2016-12-15 00:56:37
【问题描述】:

我正在尝试创建一个 Spring hateos 的示例应用程序并遇到以下异常:

java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/hetos-medias]]
    at java.util.concurrent.FutureTask.report(FutureTask.java:122)
    at java.util.concurrent.FutureTask.get(FutureTask.java:192)
    at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1123)
    at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:816)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1575)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1565)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:745)
Caused by: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/hetos-medias]]
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154)
    ... 6 more
Caused by: java.lang.NoSuchMethodError: org.apache.tomcat.util.res.StringManager.getManager(Ljava/lang/Class;)Lorg/apache/tomcat/util/res/StringManager;
    at org.apache.tomcat.websocket.WsWebSocketContainer.<clinit>(WsWebSocketContainer.java:77)
    at org.apache.tomcat.websocket.server.WsSci.init(WsSci.java:131)
    at org.apache.tomcat.websocket.server.WsSci.onStartup(WsSci.java:47)
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5481)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
    ... 6 more

看起来org.apache.tomcat.util.res.StringManager.getManager 类可能有重复的 jar,但我在类路径中没有找到任何重复的 jar。我使用的是 tomcat 7,以下是我的 pom.xml 和库详细信息。

<dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-hateoas</artifactId>
            <version>1.4.0.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
            <version>1.4.0.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>com.jayway.jsonpath</groupId>
            <artifactId>json-path</artifactId>
            <scope>test</scope>
            <version>2.2.0</version>
        </dependency>
    </dependencies>

    <properties>
        <java.version>1.8</java.version>
    </properties>




    <repositories>
        <repository>
            <id>spring-releases</id>
            <url>https://repo.spring.io/libs-release</url>
        </repository>
    </repositories>
    <pluginRepositories>
        <pluginRepository>
            <id>spring-releases</id>
            <url>https://repo.spring.io/libs-release</url>
        </pluginRepository>
    </pluginRepositories>

【问题讨论】:

  • 您是否部署到与您用于编译的版本不同的 Tomcat 版本?这是此类错误的常见原因。即使您“确定”版本相同,我也会仔细检查。
  • 我在我的 Eclipse 中使用 apache-tomcat-7.0.70 并且战争已与服务器正确同步。这只是我 Eclipse 中的服务器。

标签: java spring maven tomcat spring-hateoas


【解决方案1】:

您必须在 pom.xml 中设置以下内容

<tomcat.version>7.0.59</tomcat.version>

https://docs.spring.io/spring-boot/docs/current/reference/html/howto-embedded-servlet-containers.html

【讨论】:

    猜你喜欢
    • 2014-04-26
    • 2016-01-14
    • 1970-01-01
    • 2014-08-14
    • 2016-05-09
    • 2018-01-24
    • 2013-01-12
    • 2014-06-20
    • 1970-01-01
    相关资源
    最近更新 更多