转:java两个jre目录和三个lib目录

lib目录下放置着jar包。程序中的import语句找的就是这些文件!例如:import javax.servlet.RequestDispatcher;
    问题在于,在cmd模式下编译,系统会提示:CheckAccount.java:5: 软件包 javax.servlet 不存在!

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

我的硬盘里,lib文件夹的位置如下:
        D:\Program Files\Java\jdk1.6.0_02\jre\lib
        D:\Program Files\Java\jre1.6.0_02\lib
        D:\Program Files\Java\jdk1.6.0_02\lib
    分别为jdk下的lib;jre下的lib;jdk下的jre下的lib。

经过验证,把servlet-api.jar包拷贝进入jdk下的jre下的lib下的ext目录后,import语句顺利通过编译!即:C:\Program Files\Java\jdk1.5.0_08\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 ,是针对不同的工作职责!不同的 jre 负责各自范围的内容。
    当用户只需要执行 java 的程序时,那么C:\Program Files\Java\jre1.5.0_08的 jre 就 ok !
    当用户是 java 程序员,则需要 java 开发环境。编译时,系统就会优先去找C:\Program Files\Java\jdk1.5.0_08\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。

时间: 2024-10-09 23:12:35

转:java两个jre目录和三个lib目录的相关文章

java-两个jre目录和三个lib目录-转

lib目录下放置着jar包.程序中的import语句找的就是这些文件!例如:import javax.servlet.RequestDispatcher; 问题在于,在cmd模式下编译,系统会提示:CheckAccount.java:5: 软件包 javax.servlet 不存在! 在安装jdk之后,仔细观察下安装路径下的文件夹,其中共计两处包含jre目录!共有三处lib目录!包含javax.servlet的jar包就应该被安置在其中的某一处.首先在tomcat的安装目录下,找到servlet

两个jre"和"三个lib"的功能简单扼要的解释

安装JDK后,Java目录下有jdk和jre两个文件夹,但jdk下还有一个jre文件夹,而且这个jre比前面那个jre在bin目录下多了个server文件夹!      普通用户装jre即可.开发人员需要安装jdk,其中包括jre.所以jdk目录下包括jre目录.两个jre大体相同,有细微的差别.      两套 jre ,是针对不同的工作职责!不同的 jre 负责各自范围的内容.      当用户只需要执行 java 的程序时,那么C:\Program Files\Java\jre1.5.0_

JDK和两个JRE

原文: http://renyongjie668.blog.163.com/blog/static/160053120101711162373/ 昨晚看到csdn上有人再问jre的东东,忽然想起以前一个同学和我说过,安装jdk后有两个jre目录及他们的区别,现在又仔细梳理了一下,总结一下吧. JDK就是Java Development Kit.简单的说JDK是面向开发人员使用的SDK,它提供了Java的开发环境和运行环境.SDK是Software Development Kit 一般指软件开发包

JDK安装目录分析-两个jre和三个lib

安装JDK后,Java目录下有jdk和jre两个目录,但jdk下还有一个jre目录,而且这个jre比前面那个jre在bin目录下多了个server文件夹!前一个jre俗称通用jre,后一个俗称内置jre.如下图所示: 两个jre大体相同,有细微的差别. JDK里面的工具也是用JAVA编写的,它们本身运行的时候就需要内置JRE:开发人员需要 java 开发环境,则安装jdk,内置jre在JDK安装过程中会自动安装. 通用JRE则是用来执行我们自己编写的JAVA程序:所以普通用户装通用jre即可.

深入理解JDK、JRE(两套)、JVM、以及不同目录下的java.exe

内容来自:http://blog.sina.com.cn/s/blog_7ffb8dd501011sgc.html 1.jdk下bin目录里的java.exe与外部jre中的java.exe的秘密    jdk里的java.exe和jre中的java.exe其实是一样的,但我们在运行的时候用的却是优先使用外部jre中的java.exe(即使我们安装了JDK且也配置了环境变量). 首先,我们看下JDK的安装过程中发生了什么事:    安装JDK时一定会在其子目录下面安装一个JRE,同时在安装的过程

Java反射获取class对象的三种方式,反射创建对象的两种方式

Java反射获取class对象的三种方式,反射创建对象的两种方式 1.获取Class对象 在 Java API 中,提供了获取 Class 类对象的三种方法: 第一种,使用 Class.forName 静态方法. 前提:已明确类的全路径名. 第二种,使用 .class 方法. 说明:仅适合在编译前就已经明确要操作的 Class 第三种,使用类对象的 getClass() 方法. 适合有对象示例的情况下 package com.reflection; /** * Created by Liuxd

Linux配置tomcat (centos配置java环境 tomcat配置篇 总结三)

?下载安装tomcat7 ?设置启动和关闭 ?设置用户名和密码 ?发布java web项目 声明:这篇教程是建立在前两篇教程的基础上的,所以,还没安装工具和jdk,可以先看这个系列的前面两篇(去到文末找超链接喔!). 1.下载安装tomcat7 1.1在Xshell中使用命令跳转到local下面创建者自己的文件夹tomcat cd /usr/local/ mkdir tomcat cd  tomcat/  1.2下载tomcat7 下载tomcat7:  http://tomcat.apache

Java中OutOfMemoryError(内存溢出)的三种情况及解决办法

相信有一定java开发经验的人或多或少都会遇到OutOfMemoryError的问题,这个问题曾困扰了我很长时间,随着解决各类问题经验的积累以及对问题根源的探索,终于有了一个比较深入的认识. 在解决java内存溢出问题之前,需要对jvm(java虚拟机)的内存管理有一定的认识.jvm管理的内存大致包括三种不同类型的内存区域:Permanent Generation space(永久保存区域).Heap space(堆区域).Java Stacks(Java栈).其中永久保存区域主要存放Class

java4android【3】java 环境变量 jre

path环境变量配置的目的 classpath环境变量配置的mud java的jre提供了哪些支持 1: path环境变量是为了执行java.exe 和javac.exe命令的时候,可以找到这两个文件.java一般主要用的就是这两个执行文件.之前path环境变量配置的值就是jdk安装的路径. 2: classpath环境变量是位了执行命令的时候,能够找到类文件和源文件的位置.比如 执行 java Hello.class,和javac Hello.java(后面的扩展名写出来是为了区分类文件和源文