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

本文建立在一些达人的技术文、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


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值