eclipse web工程build path中的jdk版本和java compiler compliance level jdk区别

eclipse web工程build path中的jdk版本和java compiler compliance level 的区别是什么?

例如: 我在build path中的jdk是jdk5, 但在java compiler compliance level中设置的是1.6,那么eclipse会用1.6的来编译,我想知道为什么会这样,eclipse为什么要在两个地方来设置?这种情况用于什么场合,谢谢。

另外,eclipse中,还有一个project facets,来设置java的版本,这又是用于什么场合,为什么要在这么多地方设置版本?谢谢!

build path的JDK版本是你开发的时候编译器需要使用到的,例如,如果用的JDK1.4就不能使用泛型。而java compiler compliance level设置的是你写好的JAVA代码按照什么JDK版本级别编译,例如:设置的是1.4,编译出来的class文件可以在1.4以上的JRE上运行,如果用的是5.0级别编译,就不能运行在1.4的环境里面,会提示版本过高。
只要build path的JDK版本高于或等于java compiler compliance level里面的级别都可以

如果在Preferences中 installed jres中增加JDK1.6或是1.5的话。
那么你在java compiler compliance level 中设置的话,就会对应相应的版本。
如果只设置了JDK1.6的话,而在java compiler compliance level 选中1.5的话,会提示安装1.5。

纠正下build path里面是你的class文件的运行环境级别,非编译器需要使用到的。

这么说吧。。我的理解是这样的
build path 是运行时环境
compiler 是编译时环境

假设,你的代码用到泛型,biuld path环境为1.5,compiler 环境为1.4
那么会显示编译错误,无法编译
但是这样的web项目是可以在web容器中运行的(前提是你的容易支持1.5语法)