1. 程式人生 > >Spring Boot專案釋出到tomcat7遇到的問題

Spring Boot專案釋出到tomcat7遇到的問題

Spring Boot專案改為war包釋出:

     1. 設定為war包釋出

            <groupId>com.ks.xlwj</groupId>

<artifactId>SMS_System</artifactId>
<version>0.0.1-SNAPSHOT</version>
!-- <packaging>jar</packaging> -->

<packaging>war</packaging>

    2.新增tomcat依賴

                <!-- 新增tomcat配置,打為war包. -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>

</dependency>

    3.設定war包名稱

                <build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<configuration>
<warName>sms</warName>
</configuration>
</plugin>
</plugins>

</build>

    4.繼承SpringBootServletInitializer

        @SpringBootApplication
        @ServletComponentScan
        public class SmsApplication extends SpringBootServletInitializer {
            public static void main(String[] args) {
SpringApplication.run(SmsApplication.class, args);
}

        }

run as -> Maven install war檔案生成在target資料夾下

放在tomcat8.5下可以直接執行,放在tomcat7下報錯如下:

七月 04, 2018 10:59:11 上午 org.apache.catalina.loader.WebappClassLoader validateJarFile
資訊: validateJarFile(D:\tomcat\webapps\sms\WEB-INF\lib\tomcat-embed-core-8.5.29.jar) - jar not loaded. See Servlet Spec 3.0, section 10.7.2. Offending class: javax/servlet/Servlet.class
七月 04, 2018 10:59:11 上午 org.apache.catalina.loader.WebappClassLoader validateJarFile
資訊: validateJarFile(D:\tomcat\webapps\sms\WEB-INF\lib\tomcat-embed-el-8.5.29.jar) - jar not loaded. See Servlet Spec 3.0, section 10.7.2. Offending class: javax/el/Expression.class
七月 04, 2018 10:59:11 上午 org.apache.catalina.core.ContainerBase addChildInternal
嚴重: ContainerBase.addChild: start: 
org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/sms]]
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:649)
at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1245)
at org.apache.catalina.startup.HostConfig$DeployDirectory.run(HostConfig.java:1895)
at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
at java.util.concurrent.FutureTask.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
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:78)
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)
... 10 more


七月 04, 2018 10:59:11 上午 org.apache.catalina.startup.HostConfig deployDirectory
嚴重: Error deploying web application directory D:\tomcat\webapps\sms
java.lang.IllegalStateException: ContainerBase.addChild: start: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/sms]]
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:904)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:649)
at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1245)
at org.apache.catalina.startup.HostConfig$DeployDirectory.run(HostConfig.java:1895)
at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
at java.util.concurrent.FutureTask.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)

at java.lang.Thread.run(Unknown Source)

https://www.cnblogs.com/niceboat/p/6212837.html 參考很多資料沒成功有時間再試.