Java环境变量的配置与详解

简介: 本文主要讲述Java环境变量的配置方法

1. Path变量的配置

安装好JDK之后我们需要使用javac来对java源文件进行编译,例如javac test1.java,但此时直接在DOS终端中使用javac会出现如下提示:

'javac' 不是内部或外部命令,也不是可运行的程序或批处理文件。

而出现该问题的原因是windows操作系统无法找到javac命令文件(javac是一个命令,同时也是一个执行程序(javac.exe)),windows操作系统搜索磁盘上某个命令(程序)的顺序如下:

  1. 从当前目录(终端命令行中指定的目录)下搜索
  2. 从环境变量Path指定的路径下进行搜索
  3. 上述两个地方都没搜索到则提示错误

因此如果需要在任意目录下使用javac命令则需将javac.exe所在的目录添加到到环境变量Path中,环境变量配置中用户变量和系统变量的区别如下:

  • 用户变量:仅对当前用户有效
  • 系统变量:对系统中的所有用户都有效

因此可根据需求选择对应的变量进行配置,具体配置为:
在Path中添加javac.exe所在的目录,如:

D:\Program Files\Java\jdk1.8.0_261\bin

2. classpath变量的配置

classpath变量的配置原理与Path类似,其目的是为了能够在命令行窗口中任意目录下执行java源文件编译后的字节码文件而无需在规定目录下执行。由于classpath变量并非系统自带的变量,因此需手动新建该变量并将对应目录添加到该变量中,如:

D:\javacode\class

D:\javacode\class目录存放java源文件编译后的字节码文件。
当使用java命令执行字节码文件时的执行流程如下:

  1. java命令会启动JVM
  2. JVM启动之后会启动类加载器ClassLoader
  3. ClassLoader会在硬盘上的某个目录下搜索指定的字节码文件
  4. 找到该文件后执行该文件,否则提示错误

而环境变量classpath的作用就是给ClassLoader类加载器指定路径。

3. JAVA_HOME变量的配置

该变量的作用是为了给第三方使用JDK的软件指定JDK的目录(例如Tomcat),这是因为第三方软件会引用约定好的JAVA_HOME变量来获取JDK的存放目录。JAVA_HOME变量不是系统自带的变量因此需手动新建,然后将JDK的目录添加到该变量中,如:

D:\Program Files\Java\jdk1.8.0_261

此时Path变量中的路径也可更改为

%JAVA_HOME%\bin
相关文章
|
17天前
|
Java 程序员 容器
Java中的变量和常量:数据的‘小盒子’和‘铁盒子’有啥不一样?
在Java中,变量是一个可以随时改变的数据容器,类似于一个可以反复打开的小盒子。定义变量时需指定数据类型和名称。例如:`int age = 25;` 表示定义一个整数类型的变量 `age`,初始值为25。 常量则是不可改变的数据容器,类似于一个锁死的铁盒子,定义时使用 `final` 关键字。例如:`final int MAX_SPEED = 120;` 表示定义一个名为 `MAX_SPEED` 的常量,值为120,且不能修改。 变量和常量的主要区别在于变量的数据可以随时修改,而常量的数据一旦确定就不能改变。常量主要用于防止意外修改、提高代码可读性和便于维护。
|
2月前
|
Java 编译器
java“变量 x 可能未被初始化”解决
在Java中,如果编译器检测到变量可能在使用前未被初始化,会报“变量 x 可能未被初始化”的错误。解决方法包括:1. 在声明变量时直接初始化;2. 确保所有可能的执行路径都能对变量进行初始化。
|
24天前
|
Java 编译器
Java重复定义变量详解
这段对话讨论了Java中变量作用域和重复定义的问题。学生提问为何不能重复定义变量导致编译错误,老师通过多个示例解释了编译器如何区分不同作用域内的变量,包括局部变量、成员变量和静态变量,并说明了使用`this`关键字和类名来区分变量的方法。最终,学生理解了编译器在逻辑层面检查变量定义的问题。
Java重复定义变量详解
|
27天前
|
Java 数据库连接 数据库
如何构建高效稳定的Java数据库连接池,涵盖连接池配置、并发控制和异常处理等方面
本文介绍了如何构建高效稳定的Java数据库连接池,涵盖连接池配置、并发控制和异常处理等方面。通过合理配置初始连接数、最大连接数和空闲连接超时时间,确保系统性能和稳定性。文章还探讨了同步阻塞、异步回调和信号量等并发控制策略,并提供了异常处理的最佳实践。最后,给出了一个简单的连接池示例代码,并推荐使用成熟的连接池框架(如HikariCP、C3P0)以简化开发。
48 2
|
2月前
|
Java
通过Java代码解释成员变量(实例变量)和局部变量的区别
本文通过一个Java示例,详细解释了成员变量(实例变量)和局部变量的区别。成员变量属于类的一部分,每个对象有独立的副本;局部变量则在方法或代码块内部声明,作用范围仅限于此。示例代码展示了如何在类中声明和使用这两种变量。
|
2月前
|
Java Linux iOS开发
如何设置 Java 的环境变量
设置Java环境变量是使用Java开发工具和运行Java程序的前提。主要步骤包括:安装JDK,配置系统环境变量中的JAVA_HOME、PATH和CLASSPATH,确保命令行可直接调用javac和java命令。
|
2月前
|
安全 Java 数据安全/隐私保护
如何配置 Java 安全管理器来避免访问控制异常
配置Java安全管理器以防止访问控制异常,需在启动JVM时通过 `-Djava.security.manager` 参数启用,并设置安全策略文件,定义权限规则,限制代码执行操作,确保应用安全。
|
2月前
|
Java BI 调度
Java Spring的定时任务的配置和使用
遵循上述步骤,你就可以在Spring应用中轻松地配置和使用定时任务,满足各种定时处理需求。
144 1
|
2月前
|
消息中间件 分布式计算 Java
大数据-73 Kafka 高级特性 稳定性-事务 相关配置 事务操作Java 幂等性 仅一次发送
大数据-73 Kafka 高级特性 稳定性-事务 相关配置 事务操作Java 幂等性 仅一次发送
31 2
|
2月前
|
分布式计算 资源调度 Hadoop
大数据-01-基础环境搭建 超详细 Hadoop Java 环境变量 3节点云服务器 2C4G XML 集群配置 HDFS Yarn MapRedece
大数据-01-基础环境搭建 超详细 Hadoop Java 环境变量 3节点云服务器 2C4G XML 集群配置 HDFS Yarn MapRedece
81 4