【问题标题】:Spring Boot application works as standalone but class not found when deployed in TomcatSpring Boot 应用程序独立工作,但在 Tomcat 中部署时找不到类
【发布时间】:2019-05-15 10:38:08
【问题描述】:

我有 spring boot 应用程序,一个微服务

我可以将它作为 Spring boot 应用程序毫无问题地运行

mvn clean compile spring-boot:run

现在,如果我尝试在 tomcat 9 中部署它,我会收到 ClassNotFoundException,显示好像缺少一些 jar 我尝试为一个应用程序添加缺少的 jar,但它不断出现在较新的应用程序中。 此处不涉及任何步骤,独立编译、测试,然后打包部署到tomcat。

可能是什么问题。我想这里不需要实际的日志,因为问题似乎很笼统

【问题讨论】:

  • 独立应用的嵌入式 tomcat 的 tomcat 版本是多少?
  • 你有Tomcat依赖吗:org.springframework.bootspring-boot-starter-tomcatprovided依赖> ?
  • @MohitMutha 嵌入式 tomcat 没有提到版本。它使用spring-boot版本
  • @Kamil 是的。 Tomcat 启动器存在。并且 Spring Boot 应用程序也在扩展 Servlet

标签: java spring-boot tomcat9


【解决方案1】:

答案很简单,简单而愚蠢。如果您遇到任何类似的问题,只需确保您运行的是类似版本的 tomcat。

当我使用mvn spring-boot:run 运行时,我的 Spring Boot 应用程序运行良好,但我的实际 tomcat 服务器有点旧,所以它缺少一些库。

升级tomcat版本修复了它

【讨论】:

    【解决方案2】:

    首先,Spring boot 不需要容器,可以使用 java -jar yourspsringboot.war 执行

    在您的 pom 中,您是否将其编译为与依赖项的战争? 如果是这样,请在 WEB-INF/lib 目录下进行验证。如果您无法在 lib 目录中找到依赖项,则应该是问题所在。

    【讨论】:

    • “我知道”它不需要容器。这就是为什么我说我作为独立测试然后部署在 tomcat 中。在 tomcat 中部署是业务需求。
    【解决方案3】:

    请在您的 pom.xml 中包含以下构建标记。创建新的构建部署。它会起作用的。我也遇到过这个问题。

    <build>
            <plugins>
                <plugin>
                    <artifactId>maven-war-plugin</artifactId>
                    <version>3.1.0</version>
                    <configuration>
                        <failOnMissingWebXml>false</failOnMissingWebXml>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                    <version>1.5.3.RELEASE</version>
                    <executions>
                        <execution>
                            <goals>
                                <goal>repackage</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-surefire-plugin</artifactId>
                    <version>2.20</version>
                    <configuration>
                        <useSystemClassLoader>false</useSystemClassLoader>
                    </configuration>
                </plugin>
            </plugins>
        </build>
    

    【讨论】:

    • 更新了消息,请立即查看。
    • 你能解释一下答案吗.. 它是如何解决缺失库的
    猜你喜欢
    • 1970-01-01
    • 2020-05-08
    • 2019-11-13
    • 2019-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-27
    • 2021-06-18
    相关资源
    最近更新 更多