spring boot运行在jdk1.6、tomcat6的说明及demo下载

来源:互联网 发布:股票抢单软件 编辑:程序博客网 时间:2024/05/29 05:00

本文建立在一些达人的技术文、stackoverflow的回答、springboot的官方文档的基础上的。主要是对在idea下开发的springboot1.5.6(相近的1.5.2也适用)web程序,如何使用jdk1.6编译生成,并且能够被正常打为war包部署到tomcat6中运行(tomcat6使用的jdk也是1.6版本)等内容进行介绍。在文章最后,将会赋上一个作者实现的demo下载链接。

程序人生:实际上,最简单的方法就是升级到jdk1.7以及tomcat7,但人生十有八九不如意,作为程序猿,对忍受并解决历史遗留问题早已无力吐槽,一声叹息后开始埋头解决。没有仔细看文档的各种配置真的是虐人千万遍……

话归主题。

开发环境:

idea2016.3.4;

jdk1.6.0_26  x86;

 

部署环境:

jdk1.6.0_26  x86;

tomcat6.0.45  x86;

 

springboot版本:1.5.6(其他版本应该问题也不大)

 

主要的问题及解决说明:

1、org/apache/juli/logging/LogFactory类无法找到,这个是由于pom.xml里没有添加对org.apache.tomcat:tomcat-juli:7.0.59的引用,在pom.xml里的<dependencies>节点内添加子节点(tomcat.version的值见2):

                   <dependency>

                            <groupId>org.apache.tomcat</groupId>

                            <artifactId>tomcat-juli</artifactId>

                            <version>${tomcat.version}</version>

                   </dependency>

2、开发调试时,使用springboot内置的tomcat服务时,由于默认使用的是tomcat8+,在使用jdk1.6时,会出现一些问题(具体不记得了……),解决方式是在pom.xml的<properties>节点里添加如下子节点:

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

为什么上面需要7.0.59这个版本,比较重要的一个原因是org.apache.catalina.SessionIdGenerator这个类是7.0.58版本以后才可用,你用更早的版本类将不会被找到,此外就是网文都说需要tomcat7配合jdk1.6,这个没细研究,反正是部署到tomcat6上没有报SessionIdGenerator类未找到的错误;

3、pom.xml的<properties>节点里添加如下几个子节点:

                   <java.version>1.6</java.version>

                   <maven.compiler.source>1.6</maven.compiler.source>

                   <maven.compiler.target>1.6</maven.compiler.target>

4、springboot内jackson的版本问题。此问题在springboot的官方文档里进行了说明,在pom.xml的<properties>节点里添加如下子节点:

<jackson.version>2.6.7</jackson.version>

此外,还需要在pom.xml文件内建立一个<dependencyManagement>节点,里面添加如下内容(从springboot给的解决方案里抄的):

<dependencies><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-annotations</artifactId><version>${jackson.version}</version></dependency><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-core</artifactId><version>${jackson.version}</version></dependency><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId><version>${jackson.version}</version></dependency><dependency><groupId>com.fasterxml.jackson.dataformat</groupId><artifactId>jackson-dataformat-csv</artifactId><version>${jackson.version}</version></dependency><dependency><groupId>com.fasterxml.jackson.dataformat</groupId><artifactId>jackson-dataformat-xml</artifactId><version>${jackson.version}</version></dependency><dependency><groupId>com.fasterxml.jackson.dataformat</groupId><artifactId>jackson-dataformat-yaml</artifactId><version>${jackson.version}</version></dependency><dependency><groupId>com.fasterxml.jackson.datatype</groupId><artifactId>jackson-datatype-hibernate4</artifactId><version>${jackson.version}</version></dependency><dependency><groupId>com.fasterxml.jackson.datatype</groupId><artifactId>jackson-datatype-hibernate5</artifactId><version>${jackson.version}</version></dependency><dependency><groupId>com.fasterxml.jackson.datatype</groupId><artifactId>jackson-datatype-jdk7</artifactId><version>${jackson.version}</version></dependency><dependency><groupId>com.fasterxml.jackson.datatype</groupId><artifactId>jackson-datatype-jdk8</artifactId><version>${jackson.version}</version></dependency><dependency><groupId>com.fasterxml.jackson.datatype</groupId><artifactId>jackson-datatype-joda</artifactId><version>${jackson.version}</version></dependency><dependency><groupId>com.fasterxml.jackson.datatype</groupId><artifactId>jackson-datatype-jsr310</artifactId><version>${jackson.version}</version></dependency><dependency><groupId>com.fasterxml.jackson.jaxrs</groupId><artifactId>jackson-jaxrs-base</artifactId><version>${jackson.version}</version></dependency><dependency><groupId>com.fasterxml.jackson.jaxrs</groupId><artifactId>jackson-jaxrs-json-provider</artifactId><version>${jackson.version}</version></dependency><dependency><groupId>com.fasterxml.jackson.module</groupId><artifactId>jackson-module-parameter-names</artifactId><version>${jackson.version}</version></dependency></dependencies>

5、web.xml文件的手工添加。这点也是抄达人们的(版权不归我):在/src/main/文件夹下,建立一个子文件夹webapp,在其下建立一个文件夹WEB-INF,然后在WEB-INF内建立一个web.xml:

<?xml version="1.0" encoding="UTF-8"?><web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"><context-param><param-name>contextConfigLocation</param-name><param-value>com.zc.HellomixApplication</param-value></context-param><listener><listener-class>org.springframework.boot.legacy.context.web.SpringBootContextLoaderListener</listener-class></listener><servlet><servlet-name>appServlet</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><init-param><param-name>contextAttribute</param-name><param-value>org.springframework.web.context.WebApplicationContext.ROOT</param-value></init-param><load-on-startup>1</load-on-startup></servlet><servlet-mapping><servlet-name>appServlet</servlet-name><url-pattern>/</url-pattern></servlet-mapping></web-app>

上面基本一看就明白:就是为了解决tomcat6的servlet-api是2.5版本的,而springboot默认非要3.0及以上。

6、其余配置问题。

在配置spring-boot-starter-web时,排除了log4j-over-slf4j、spring-boot-starter-tomcat而改为添加特定版本的前两者依赖;

添加了spring-boot-legacy依赖;

添加了javax.inject依赖;

<build>节点内的<plugins>子节点内,添加了spring-boot-maven-plugin、maven-compiler-plugin、maven-war-plugin、maven-deploy-plugin、tomcat6-maven-plugin(有些可能不需要,比如最后一个如果不使用mvn tomcat6:deploy的话其实也没有必要)等插件;

<build>节点内的<resources>子节点内,添加了对src/main/java路径内的xml进行打包包含的配置。

 

以上就是所有的了,配合demo,整个基础框架应该就有了。

 

参考:

java.lang.NoClassDefFoundError: org/apache/juli/logging/LogFactory的解决:http://xuejiangtao.iteye.com/blog/882585

SpringBoot应用部署到Tomcat中无法启动问题:http://blog.csdn.net/asdfsfsdgdfgh/article/details/52127562

spring-boot在jdk1.6下运行web项目:http://blog.csdn.net/u013593306/article/details/49864917

spring boot项目发布tomcat容器(包含发布到tomcat6的方法):http://www.cnblogs.com/weixliu/p/6432342.html

spring-boot-legacy:https://github.com/dsyer/spring-boot-legacy

Spring开发中出现Unsupportedmajor.minor version 51.0错误:http://www.codeweblog.com/spring开发中出现unsupported-major-minor-version-51-0错误/

84.11 How to use Java 6:https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#howto-use-java-6

Tomcat 7.0.25 SessionIdGenerator exception:https://stackoverflow.com/questions/40041162/tomcat-7-0-25-sessionidgenerator-exception

 

 

下载链接:http://download.csdn.net/detail/smartcore/9918120