java classpath设置_Java CLASSPATH设置

Java CLASSPATH设置

CLASSPATH: CLASSPATH是一个环境变量,Application ClassLoader使用它来定位和加载.class文件。 CLASSPATH定义路径,以查找不是扩展或Java平台一部分的第三方和用户定义的类。设置CLASSPATH时,请包括所有包含.class文件和JAR文件的目录。

如果满足以下条件,则需要设置CLASSPATH:

您需要加载当前目录或任何子目录中不存在的类。

您需要加载不在扩展机制指定位置的类。

CLASSPATH取决于您所设置的CLASSPATH。 CLASSPATH在末尾具有目录名或文件名。以下几点描述了CLASSPATH的结尾。

如果是JAR或zip,则该文件包含类文件,CLASSPATH以zip或JAR文件的名称结尾。

如果将类文件放在未命名的程序包中,则CLASSPATH以包含类文件的目录结尾。

如果将类文件放在命名包中,则CLASSPATH的目录以完整包名包含根包,该根包是完整包名中的第一个包。

CLASSPATH的默认值为点(.)。这意味着仅搜索当前目录。设置CLASSPATH变量或使用-classpath命令(简称-cp)时,CLASSPATH的默认值将被覆盖。如果要在搜索路径中包含当前目录,请在新设置中添加点(.)。

如果CLASSPATH找到了当前目录中存在的类文件,则它将加载该类

如果要设置多个类路径,则需要用分号(;)分隔每个CLASSPATH,并使用它,而不管同一个目录中是否存在相同的名称类。

使用JVM的第三方应用程序(MySQL和Oracle)可以修改CLASSPATH环境变量以包括它们使用的库。这些类可以存储在目录或归档文件中。 Java平台的类存储在rt.jar中。

设置CLASSPATH的方法有两种: 通过命令提示符或通过设置环境变量。

让我们看看如何设置MySQL数据库的CLASSPATH:

步骤1:单击Windows按钮并选择"控制面板"。选择系统。

b8b35e3f22cba1683f11587ca64da203.png

步骤2:单击

高级系统设置。

5aea936798cbbdfa10164347baeb836e.png

第3步:。将打开一个对话框。单击环境变量。

23588039b982e84824fddc3b2a64733c.png

步骤4:如果CLASSPATH已存在于系统变量中,请单击"编辑"按钮,然后在末尾添加分号(;)。粘贴MySQL-Connector Java.jar文件的路径。

如果系统变量中不存在CLASSPATH,请单击"新建"按钮,然后将变量名输入CLASSPATH,将变量值输入到

C。 : \ Program Files \ Java \ jre1.8 \ MySQL-Connector Java.jar;。;

记住: 放入;。;在CLASSPATH的末尾。

f6485c5ba7a91c3d8261fc1e3603d1d8.png

PATH和CLASSPATH之间的区别

PATH

CLASSPATH

PATH是一个环境变量。

CLASSPATH也是一个环境变量。

操作系统使用它来查找可执行文件(.exe)。

Application ClassLoader使用它定位.class文件。

您需要包括包含.exe文件的目录。

您需要包括所有包含.class和JAR文件的目录。

PATH环境变量一旦设置,就不能覆盖。

可以使用javac和java命令的命令行选项-cp或-CLASSPATH覆盖CLASSPATH环境变量。

如何在Windows中使用命令提示符设置CLASSPATH

在命令提示符中键入以下命令,然后按Enter。

set CLASSPATH=%CLASSPATH%;C:\Program Files\Java\jre1.8\rt.jar;

在上面的命令中,该集合是内部DOS命令,允许用户更改变量值。 CLASSPATH是变量名。用百分号(%)括起来的变量是现有的环境变量。分号是分隔符,在(;)之后是rt.jar文件的路径。

ext文件夹在Java中的工作方式

ext目录的工作原理类似于CLASSPATH。 ext目录是类加载机制的一部分。 ext目录的JAR中可用的类可用于Java应用程序。

下表说明了CLASSPATH和扩展机制之间的主要区别:

特征

CLASSPATH

扩展机制

类加载顺序

在加载引导程序和扩展名之后加载CLASSPATH。

ext会在引导加载后但CLASSPATH加载之前加载。

范围

这是特定于应用程序的。主机上的所有JRE都是CLASSPATH环境变量。

所有JVM都在特定的JRE java.ext.dirs中运行。

包裹名称

java.class.path用于查找包含类文件的目录和JAR归档文件。

java.ext.dirs用于指定扩展机制在何处加载类。

规格

由名称指定,包括extension.jar和包含.class文件的目录。

指定目录中的所有JAR文件都已加载。

该机制将从扩展目录中拾取所有.jar文件,即使该文件不具有.jar扩展名。这样做的实现是,如果可以更改放置在类路径目录中的jar的名称,使其具有.jar以外的扩展名。通配符(*)不起作用。此技术不适用于扩展目录。

让我们通过示例了解执行过程。

A.java

public class A

{

public String toString()

{

return "hello";

}

}

B.java

public class B

{

public static void main(final String[] args)

{

System.out.println(new A());

}

}

编译A.java文件。我们将已编译的A.class文件存档到A.jar中。将此JAR文件放置到已编译的B.class文件之外的另一个目录中。

为演示类路径的使用,我们将A.jar文件放置在目录C:\JavaPrograms中,并将通过以下方式访问该JAR: 通配符(*)供B使用。

我们发现,当我们从当前目录中删除A.class时,B仍然可以加载A.class。 Java启动器已明确寻找C: \ JavaProgram。也可以在不存在相同目录和明确的类路径规范的情况下加载该类。

使用扩展机制通常被称为好处,因为所有使用该JRE的应用程序都可以无需在类路径上显式指定它们即可看到相同的类。

如果在同一CLASSPATH引用的目录中将A.jar的名称更改为A.backup,会发生什么情况。当我们这样做时会遇到NoClassDefFoundError,因为CLASSPATH引用没有.jar扩展名。

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JAVA项目中,CLASSPATH是一个重要的环境变量,用于指定JAVA程序运行时需要加载的类和资源文件的路径。如果CLASSPATH设置不正确,会导致无法找到类文件或资源文件,从而引发程序运行异常。以下是关于JAVA项目中CLASSPATH路径的详解: 1. CLASSPATH设置 在命令行中设置CLASSPATH的方法如下: ``` java -classpath <path1>:<path2>:<path3> <classname> ``` 其中,`<path1>`、`<path2>`、`<path3>`表示类文件或资源文件所在的路径,多个路径之间用冒号分隔。`<classname>`表示要执行的类名。 在Eclipse等开发工具中,可以在项目的配置中设置CLASSPATH。 2. CLASSPATH的顺序 当JAVA程序需要加载一个类或资源文件时,会按照CLASSPATH中指定的顺序依次在各个路径中查找文件。如果找到了就直接加载,否则就继续查找下一个路径,直到找到该文件或查找完所有路径为止。 因此,在设置CLASSPATH时,需要注意路径的顺序。一般来说,应该将当前项目的路径放在最前面,以确保程序能够正确地加载项目中的类和资源文件。 3. CLASSPATH的写法 在设置CLASSPATH时,路径的写法有以下几种: - 绝对路径:例如`/usr/local/java/lib`,表示在根目录下的`/usr/local/java/lib`路径中查找文件。 - 相对路径:例如`./lib`,表示在当前路径下的`./lib`路径中查找文件。 - 通配符:例如`./lib/*.jar`,表示在当前路径下的`./lib`路径中查找所有以`.jar`结尾的文件。 4. CLASSPATH的常见问题 在JAVA项目中,常见的CLASSPATH路径问题有以下几种: - 类文件或资源文件不存在:如果CLASSPATH中指定的路径中不存在要加载的类文件或资源文件,会导致程序运行异常。 - CLASSPATH顺序设置不正确:如果CLASSPATH中指定的顺序不正确,可能会导致程序加载的类文件或资源文件不是期望的那个,从而引发程序运行异常。 - CLASSPATH路径中包含空格:如果CLASSPATH路径中包含空格,需要使用双引号将路径括起来,否则可能会导致程序无法正确加载类文件或资源文件。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值