安装jdk完成后的path、classpath配置

JDK安装后Path和Classpath配置详解
本文详细记录了安装JDK后配置path和classpath的过程。介绍了不配置路径时执行命令出现的错误及原因,还分别说明了在Windows和Linux系统下设置JAVA_HOME、PATH和CLASSPATH三个环境变量的方法,并通过实例分析了配置的作用。

将安装完成JDK后配置path和classpath的过程写下。记录了路径的配置方法和如果没有配置路径会出现的错误以及错误发生原因:


我将jdk安装在目录c:/jdk下:
用一个HelloWorld文件做实验:
class HelloWorld {
public static void main(String[] args) {
// Display "Hello World!"
System.out.println("Hello World!");
}
}
存成.java文件,注意文件名称要和class的名称包括大小写在内完全一致。
在不配置任何路径的情况下执行javac命令:
在dos命令提示符下 键入:c:/jdk>javac HelloWorld.java
发现下面错误提示:‘javac’不是内部或外部命令,也不是可运行的程序或批处理文件。
但是,如果将上面命令换成:c:/jdk/bin>javac c:/jdk/HelloWorld.java则可以顺利生成class文件。
分析原因:
c:/jdk>javac HelloWorld.java 因为c:/jdk路径下不能找到javac的执行文件,因此会出现错误提示。很明显,javac放在c:/jdk/bin目录下,在c:/jdk/bin下执行javac一定能够成功。同样,我们在path中配置c:/jdk/bin后在执行javac的时候会在path配置的路径下面找javac文件,找到了自然可以正确的执行了。

如果没有配置classpath,用java命令执行class文件的时候会出现以下错误:
Exception in thread "main" java.lang.NoClassDefFoundError: HelloWorld。 这个错误是不能通过在执行java命令的时候调整当前目录能够避免的。因此classpath是一定要配置的。

配置详解:(下面是转载)

JAVA_HOME:该环境变量的值就是  Java  所在的目录,一些  Java  版的软件和一些  Java  的工具需要用到该变量,设置  PATH  和  CLASSPATH  的时候,也可以使用该变量以方便设置。(我用的JCreator没有配置java_home执行也是正常的,这个我还不知道是配合什么java软件和java工具使用的。)
 
PATH:指定一个路径列表,用于搜索可执行文件的。执行一个可执行文件时,如果该文件不能在当前路径下找到,则依次寻找  PATH  中的每一个路径,直至找到。或者找完  PATH  中的路径也不能找到,则报错。Java  的编译命令  (javac),执行命令  (java)  和一些工具命令  (javadoc,  jdb  等)  都在其安装路径下的  bin  目录中。因此我们应该将该路径添加到  PATH  变量中。
 
CLASSPATH:也指定一个路径列表,是用于搜索  Java  编译或者运行时需要用到的类。在  CLASSPATH  列表中除了可以包含路径外,还可以包含  .jar  文件。Java  查找类时会把这个  .jar  文件当作一个目录来进行查找。通常,我们需要把  JDK  安装路径下的  jre/lib/rt.jar  (Linux:  jre/lib/rt.jar)  包含在  CLASSPATH  中。


PATH  和  CLASSPATH  都指定路径列表,列表中的各项  (即各个路径)  之间使用分隔符分隔。在  Windows  下,分隔符是分号  (;),而在  Linux  下,分隔符是冒号  (:)。
 
下面分别说明三个环境变量在  Windows  和  Linux  下如何设置,不过在此之前,我们需要做个假设。假设  JDK  在  Windows  下的安装路径是  C:/jdk/,在  Linux  下的安装路径是  /usr/local/jdk/。那么,安装后的  JDK  至少会包括如下内容:
 
                  C:/jdk  (/usr/local/jdk)
                      |--  bin
                      |--  demo
                      |--  include
                      |--  jre
                      |      |--  bin
                      |      `--  lib
                      `--  lib
 
  *****    在  Windows  下设置
 
          Windows  下使用  set  命令设置环境变量,为了使每一次启动计算机都设置这些环境变量,应该在系统盘根目录下的  autoexec.bat  文件中进行设置,如:
 
                  set  JAVA_HOME=C:/jdk
                  set  PATH=%JAVA_HOME%/bin;C:/Windows;C:/Windows/Command
                  set  CLASSPATH=%JAVA_HOME%/jre/lib/rt.jar;.
 
          有些版本的  Windows  不能用  %变量名%  来替换环境变量的内容,那么就只好直接写  C:/jdk  而不是  %JAVA_HOME%  了。另外,C:/Windows  和  C:/Windows/Command  是  Windows  会自动加入路径的,所以可以从设置中去掉。如果在  autoexec.bat  中已经设置了  PATH,那只需要将  %JAVA_HOME%/bin  加到原来设置  PATH  的那条语句中就行了。
 
          CLASSPATH  也可以根据需要设置或者加入其它的路径,比如你想把自己写的一些类放在  C:/java  中,就可以把  C:/java  也添加到  CLASSPATH  中去,set  CLASSPATH=%JAVA_HOME%/jre/lib/rt.jar;C:/java;.。
 
          注意,在  CLASSPATH  中包含了一个“当前目录  (.)”。包含了该目录后,就可以到任意目录下去执行需要用到该目录下某个类的  Java  程序,即使该路径并未包含在  CLASSPATH  中也可以。原因很简单:虽然没有明确的把该路径包含在  CLASSPATH  中,但  CLASSPATH  中的  “.”  在此时就代表了该路径,如:
 
          假设在  C:/java  目录下有可运行的类  HelloJava.class,那么
 
                  C:/>  set  CLASSPATH=C:/jdk/jre/lib/rt.jar;.      //  设置  CLASSPATH  环境变量,注意最后有一个  “.”
                  C:/>  cd  java                                                                  //  转到  C:/java  目录
                  C:/java>  java  HelloJava                                            //  运行  HelloJava
                  Hello,  Java.                                                                //  运行结果
                  C:/java>  _
 
          该例将在  1.3.3  节中分析。
 
  ****  在  Linux  下设置
 
          Linux  下使用“变量名=变量值”设置变量,并使用  export  命令将其导出为环境变量。为了使每一次登录都自动设置好这些变量,你需要在  ~/.bash_profile  里或者  ~./bashrc  里进行设置,如
 
                  export  JAVA_HOME=/usr/local/jdk
                  export  PATH=$JAVA_HOME/bin:$PATH
                  export  CLASSPATH=$JAVA_HOME/jre/lib/rt.jar:.
 
          设置  PATH  时用的  $JAVA_HOME  是指替换变量  JAVA_HOME  的值到  $JAVA_HOME  所在位置。如上句实际就是  export  PATH=/usr/local/jdk/bin:$PATH。这句中  $PATH  也是同样的作用,不过这里的  PATH  是指以前设置的  PATH  变量的值,而非本次设置  PATH  变量的值。
 
          注意,在  CLASSPATH  中包含了一个“当前目录  (.)”。包含了该目录后,就可以到任意目录下去执行需要用到该目录下某个类的  Java  程序,即使该路径并未包含在  CLASSPATH  中也可以。原因很简单:虽然没有明确的把该路径包含在  CLASSPATH  中,但  CLASSPATH  中的  “.”  在此时就代表了该路径,例如
 
          假设在  /home/fancy/java  目录下有可运行的类  HelloJava.class,那么
 
                  [fancy@matrix  fancy]$  export  CLASSPATH=/usr/local/jdk/jre/lib/rt.jar:.    //  设置  CLASSPATH,注意最后的“.”
                  [fancy@matrix  fancy]$  cd  ~/java                                                                                  //  转到  /home/fancy/java
                  [fancy@matrix  java]$  pwd                                                                                                //  显示当前目录
                  /home/fancy/java                                                                                                                //  当前目录是  /home/fancy/java
                  [fancy@matrix  java]$  java  HelloJava                                                                          //  运行  HelloJava
                  Hello,  Java                                                                                                                          //  运行结果
                  [fancy@matrix  java]$  _
 
          该例将在  1.3.3  节中分析
 
  *****    实例分析
 
          1.3.1  节和  1.3.2  节中的用到的实际上是一样的例子,只是操作系统不同,略有差别。
 
          两个例子都提到一个“可运行的类”,它是指包含了  public  static  void  main(String[]  args)  方法的类,这将在下一章  HelloJava  一节中详述。例中的  CLASSPATH  均未包含  HelloJava.class  所在的目录(C:/java,  /home/fancy/java),但是均包含了当前目录  (.)。因此转到包含  HelloJava.class  的目录下去执行  java  HelloJava,在  Java  寻找到  CLASSPATH  中的“.  (当前目录,C:/java,  /home/fancy/java)”时,找到了  HelloJava.class,运行成功。

<think>首先,用户的问题是:“安装jdk没有CLASSPATH系统变量”。这是一个关于Java开发环境设置的问题。用户提到安装JDK,但系统变量中没有CLASSPATH。 回顾我的知识: - 在安装JDK时,通常不会自动设置CLASSPATH环境变量。CLASSPATH是可选的,用于指定Java类文件的搜索路径。 - 用户可能遇到了问题,比如无法运行Java程序,因为系统找不到类文件。 - 我需要解释为什么没有CLASSPATH,以及如何处理这种情况。 关键点: - CLASSPATH不是必需的;Java可以通过其他方式找到类文件。 - 最佳实践是使用命令行选项如 `-cp` 或 `-classpath` 指定类路径,而不是依赖系统变量。 - 用户可能需要设置PATH变量以确保Java命令可用,但CLASSPATH是额外的。 结构化回答: 1. **解释为什么没有CLASSPATH**:安装JDK时,安装程序可能只设置PATH变量以包括Java可执行文件(如javajavac)。CLASSPATH通常需要手动设置,或者使用命令行选项。 2. **是否需要手动设置CLASSPATH**:在大多数情况下,不需要全局CLASSPATH变量。推荐的方法是每次运行Java应用程序时使用 `-cp` 指定路径。 3. **如何设置CLASSPATH(如果需要)**:提供步骤来手动设置系统变量。 4. **替代方法和最佳实践**:强调使用IDE或命令行选项来管理类路径。 5. **验证设置**:指导用户如何测试Java是否正常工作。 确保回答使用中文:用户的问题是用中文提出的,指令要求用中文回答回答。 指令回顾: - 回答完问题后,必须提出3-5个相关问题。 - 相关问题必须以“§§相关问题§§”开头,第一行完整输出这个字符串,禁止换行分散。 - 相关问题基于用户的问题和我的回答。 - 格式:在回答末尾输出“§§相关问题§§”,然后列出编号的问题。 相关问题应该: - 基于CLASSPATH的设置、Java环境配置等。 - 数量在3到5个之间。 - 每个问题以数字点开头,如“1. ...”。 脑力storm相关问题: 1. 如何在命令行中临时设置Java类路径? 2. 如果使用IDE如Eclipse,如何配置项目的构建路径而不依赖系统变量? 3. 为什么现代Java开发不推荐使用全局CLASSPATH变量? 4. 如何处理多个项目需要不同类路径的情况? 5. 如果Java程序报告ClassNotFoundException,如何诊断原因? 确保相关问题相关且有价值。 完整回答结构: - 先回答问题:解释安装JDK没有CLASSPATH是正常的,并提供解决方案。 - 然后输出“§§相关问题§§” - 列出3-5个相关问题。 编写回答: - 标题或开头:直接回应问题。 - 正文:详细解释。 - 结尾:相关问题。 示例格式参考:用户提供了示例,但内容不同。我需要保持类似结构。 </think>### 安装 JDK没有 CLASSPATH 系统变量的处理 安装 JDK 时,安装程序通常不会自动创建 CLASSPATH 系统变量,因为 Java 虚拟机(JVM)默认从当前目录(`.`)或命令行参数加载类文件。CLASSPATH 不是必需的环境变量,其缺失不会影响 JDK 核心功能(如 `java` 或 `javac` 命令),但当您运行自定义 Java 程序时,可能会导致 `ClassNotFoundException` 错误。以下是原因、验证方法和解决方案: #### 一、为什么安装 JDK没有 CLASSPATH - **正常现象**: - Oracle 或 OpenJDK 安装程序默认只设置 `PATH` 变量(用于查找 `java.exe` 等可执行文件)。 - CLASSPATH 是可选变量,用于指定类文件搜索路径,但现代 Java 开发推荐使用命令行选项(如 `-cp`)代替全局设置。 - **影响范围**: - 基础命令如 `java -version` 仍可运行(依赖 `PATH`)。 - 运行自定义类文件(如 `java MyClass`)时,如果类文件不在当前目录或未指定路径,则会报错。 #### 二、验证与解决方案 1. **检查环境变量**: - **Windows**:在 CMD 中运行: ```cmd echo %CLASSPATH% # 若返回空,表示未设置 ``` - **Linux/macOS**:在终端运行: ```bash echo $CLASSPATH # 若返回空,表示未设置 ``` 2. **无需手动设置 CLASSPATH 的情况**: - 使用 `-cp` 参数运行程序(推荐): ```bash java -cp ".:/path/to/your/classes" MyClass # Linux/macOS ``` ```cmd java -cp ".;C:\your\classes" MyClass # Windows ``` - IDE(如 IntelliJ 或 Eclipse)自动管理类路径,无需全局变量。 3. **手动设置 CLASSPATH(如需全局生效)**: - **Windows**: 1. 右键“此电脑” > 属性 > 高级系统设置 > 环境变量。 2. 在“系统变量”中点击“新建”: - 变量名:`CLASSPATH` - 变量值:`.`(当前目录)或具体路径如 `C:\lib\*.jar;.`。 3. 保存并重启 CMD。 - **Linux/macOS**: 编辑 `~/.bashrc` 或 `~/.zshrc`: ```bash export CLASSPATH=".:/usr/share/java" # 示例路径 source ~/.bashrc # 立即生效 ``` 4. **验证 Java 环境**: - 创建一个测试类 `Test.java`: ```java public class Test { public static void main(String[] args) { System.out.println("JDK works!"); } } ``` - 编译并运行: ```bash javac Test.java java Test # 成功输出表示环境正常 ``` #### 三、最佳实践 - **避免全局 CLASSPATH**:优先使用 `-cp` 命令行参数,防止不同项目冲突。 - **路径分隔符**:Windows 用 `;`,Linux/macOS 用 `:`。 - **常见问题处理**: - 如果报错 `ClassNotFoundException`,检查类文件位置或显式指定 `-cp`。 - 确保 `PATH` 变量已正确指向 JDK 的 `bin` 目录(安装 JDK 时会自动设置)。 > **注意**:CLASSPATH 的缺失是设计行为,不影响 JDK 核心功能。只有在需要全局类搜索路径时才需手动添加。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值