探讨myeclipse保存后有自动编译的功能
今天来和大家探讨两个问题
第一个问题:为什么myeclipse有保存后自动编译src里的java代码的功能?
我们在安装myeclipse时加载自己的安装的tomcat时会发现(通过查看myeclipse的windows-preferences-servers-tomcat),在tomcat下面有个JDK选项(它包含着此JDK的路径)。
我个人认为myeclipse中的tomcat下的JDK目的是告诉myeclipse使用此JDK路径下的编译器将web project工程或者java project工程中src里的.java文件编译为.class存储到该tomca的webapp中。它不负责jsp文件的编译。
第二个问题:由jsp文件转换成的.java文件由谁来编译呢?
答案是tomcat。
当我们保存jsp文件时,tomcat目录中没有任何变化。
当我们发布工程后也只是看到jsp文件原样的发布到了webapp \ 工程名。
当我们启动tomcat时才发现在tomcat的work\Catalina\localhost下生成了一个以工程名命名的空文件夹。
当我们第一次访问jsp文件时,tomcat的work\Catalina\localhost\工程名\里面生成了两个文件(.java文件和.class文件)。
它经历了两步,这就是jsp运行机制中的转换和编译。我一直以为tomcat会调用他下面的JDK安装路径中的javac编译器来编译由.jsp转换而来的.java文件。但是当我把安装路径下的javac编译器删除,tomcat同样能够将.java文件编译为.class文件。所以tomcat负责对由.jsp转换而来的.java文件的编译,这种编译功能是通过tomcat安装路径(针对于5.5版本以上)下的lib文件夹下的jasper-***.jar系列文件来编译的。