caoni大业 spring boot 跳坑记

IDEA环境

win10 跑得刚刚,到xp系统就戈壁

 

报错

Caused by: java.lang.NoSuchMethodError: javax.servlet.ServletContext.getVirtualServerName()Ljava/lang/String;

 

原因:tomcat版本引起

解决加入

<properties>
<tomcat.version>7.0.69</tomcat.version>
</properties>

又报错

Caused by: java.lang.NoClassDefFoundError: org/apache/juli/logging/LogFactory

 

解决加入

<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-juli</artifactId>
<version>7.0.69</version>
</dependency>

 

又报错

Caused by: java.lang.NoClassDefFoundError: javax/el/ELManager

 

解决将spring-boot降到


<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.4.2.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
 

至此可正常运行

 

 

付源码 Sb20180328Application.java

@RestController
@SpringBootApplication
public class Sb20180328Application {

    public static void main(String[] args) {
        SpringApplication.run(Sb20180328Application.class, args);
    }

    @RequestMapping(value = "/",produces = "text/plain;charset=UTF-8")
    String index(){
        return "Hello Spring Boot!";
    }
}

 

引入springboot修改tomcat版本

<dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <version>${springboot.version}</version>

            <exclusions>
                <exclusion>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-tomcat</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

        <dependency>
            <groupId>org.apache.tomcat.embed</groupId>
            <artifactId>tomcat-embed-core</artifactId>
            <version>${tomcat.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.tomcat.embed</groupId>
            <artifactId>tomcat-embed-el</artifactId>
            <version>${tomcat.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.tomcat.embed</groupId>
            <artifactId>tomcat-embed-websocket</artifactId>
            <version>${tomcat.version}</version>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <version>1.4.2.RELEASE</version>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>org.apache.tomcat</groupId>
            <artifactId>tomcat-juli</artifactId>
            <version>${tomcat.version}</version>
        </dependency>

    </dependencies>

 

拦截器中的跳转

httpServletResponse.sendRedirect("/err/cscascd");

不管用,应该用

httpServletRequest.getRequestDispatcher("/err/cscascd").forward(httpServletRequest,httpServletResponse);

 =20181127===附加解决办法

2.x版本需要1.8的jdk,但一定要到72版本以上,否则

java.lang.NoSuchMethodError: javax.servlet.ServletContext.getVirtualServerName()Ljava/lang/String

还有需要下载tcnative-1.dll到 c:\windiws\system32下面,注意版本,否则会报错啥APR什么玩意的错误

http://mirrors.shu.edu.cn/apache/tomcat/tomcat-connectors/native/1.2.18/binaries/tomcat-native-1.2.18-openssl-1.0.2p-win32-bin.zip

 

posted on 2018-03-28 18:02  阮減显  阅读(1148)  评论(0)    收藏  举报

导航