程序员开发实例大全宝库

网站首页 > 编程文章 正文

如何正确编译Servlet & 两个jre目录和三个lib目录

zazugpt 2024-09-04 22:19:54 编程文章 26 ℃ 0 评论

如何正确编译Servlet & 两个jre目录和三个lib目录

以下文章转载自a personal blog:For Future,因在cmd下编译servlet总是失败,今天看了这篇文章,问题得到解决,并且这篇文章对"两个jre"和"三个lib"的功能简单扼要的解释清楚了,我认为值得收藏,希望对您也有帮助。

Lib目录下放置着jar包,程序中的import语句找的就是这些文件!例如:import javax.servlet.RequestDispatcher;

问题在于,在cmd模式下编译,系统会提示一大堆错误:HelloWorld.java软件包javax.servlet不存在!……

在安装jdk之后,仔细观察下安装路径下的文件夹,其中共有两处包含jre目录,三个lib目录,包含javax.servlet的jar包就应用被安置在其中的某一处。首先在Tomcat的安装目录,找到servlet-api.jar(C:\Program Files\Apache Software Foundation\Tomcat 6.0\lib\servlet-aip.jar)这个包用winrar解压之后看到内部结构为:javax\servlet\http,同import语句的结构一致!

在硬盘中,lib文件夹的位置如下:

C:\Program Files\Java\jdk1.6.0_10\lib

C:\Program Files\Java\jdk1.6.0_10\jre\lib

C:\Program Files\Java\jre6\lib

分别为jdk下的lib、jre下的lib、jdk下的jre下的lib。

经过验证,把servlet-api.jar包拷贝jdk下的jre的lib下的ext目录后,用import语句引入的包能够顺利通过编译!即:拷到C:\Program Files\Java\jdk1.6.0_10\jre\lib\ext目录里,其他从外部导入的jar包都放在这个目录下。例如:工程中导入mysql驱动jar包"mysql-connector-java-3.0.17-ga-bin.jar",其本质是拷贝了该jar包到ext目录下。其他情况,再添加oracle驱动jar包也类似处理。

再来解释下,为什么会有两处jre目录,三个lib目录,它们分别起什么作用?

安装JDK后,Java目录下会有jdk和jre两个文件夹,但jdk下还有一个jre文件夹,而且这个jre比前面那个jre在bin目录下多了个server文件夹!

普通用户装外层jre即可,开发人员需要安装jdk,其中包括里面的jre,所以jdk目录下包括jre目录,两个jre大体相同,但有细微的差别。

两套jre有不同的工作职责,分别负责各自范围的内容。当用户只需要执行Java的程序时,那么使用C:\Program Files\Java\jre6的jre就OK!;当用户是程序员,则需要java开发环境。编译时,系统就优先去找C:\Program Files\Java\jdk1.6.0_10\bin下的"java、javac"这些命令所在目录或者他们的父目录jre,即开发环境下运行的是jdk下的jre。

再说三个lib目录:

JDK下的lib包括java开发环境的jar包,是给JDK用的,例如JDK下有一些工作,可能要用该目录中的文件,比如:编译器等。

外层JRE下的lib只是运行java程序的jar包,是为JVM运行时候用的,包括所有的标准类库,和扩展类。

JDK下的JRE下的lib是开发环境运行时需要的jar包,最典型的就是导入的外部驱动jar包。因此编译时,系统找的是jdk下的jre,而不是最外层的jre。

最后补充几点

1、在使用Eclipse的时候不需要指定的CLASS PATH,Eclipse会自己搜索。

2、最外层的jre是通用jre,安装时是可选的(选择了,则会覆盖已有版本)。jdk目录下的jre则是必须的。如果你在eclipse里指定jdk的路径(jre的路径不用指定,会自己找的),那么用的就是这个jre,而java ,web,start等,用的则是通用jre。

2

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表