在 Java 中设置类路径的不同方法

简介: 在 Java 中设置类路径的不同方法

Java 虚拟机(JVM) 使用类路径来定位类文件以执行代码。如果您的类路径未设置并且类文件与您的 java 文件不在同一目录中,则 JVM 将无法找到所需的类文件,并且会抛出错误

设置类路径的方法

设置类路径有五种不同的方法。他们是:

  • -cp
  • -类路径
  • – 类路径
  • 使用“set classpath”命令进行临时设置
  • 使用环境变量窗口的永久设置

-cp , --classpath , --class-path方法的局限性在于它只能为当前命令行设置classpath,在下一个命令行中,如果我们直接访问所需的类,我们会得到一个Exception

语法:

java

复制代码


>java -cp <目录位置> <类名>
// 此代码位于 F:\workspace\src
// 它的类文件位于 F:\workspace\bin
class GFG {
  public static void main(String[] args)
  {
    System.out.println("GFG!");
  }
}


18.png

命令行设置 –

>java -cp <目录位置> <类名>

 或者

>java -classpath <directory_location> <类名>

 或者

>java --class-path <目录位置> <类名>
  • 如果我们想访问所有命令行的类路径,我们必须设置类路径命令选项。
  • “set classpath” 命令选项的限制是类路径设置仅适用于当前命令提示符。

临时设置:

>set classpath=<directory_location>


30.png

如果我们想为所有命令提示符永久设置类路径,我们必须在环境变量部分设置类路径。

永久设置:

  1. 首先,右键单击“此PC”。
  2. 单击属性。
  3. 点击“高级系统设置”。
  4. 单击“环境变量”。
  5. 在“用户变量部分”中,单击“新建”按钮。
  6. 输入变量名:classpath [不要在类路径之间留空格] 变量值:(例如在我的 F:\workspace\bin 中)
  7. 单击确定->确定->确定。
  8. 关闭所有窗口,打开一个新的命令提示符,然后运行 java 命令


31.png

环境变量设置

必须包括 .; 在类路径开头,以便JVM可以分别访问当前工作目录和所需类文件的目录。

>java -cp <.;directory_location> <类名>

'.' 在类路径中的重要性

如果我们将 classpath 设置为指向一个目录,如果我们不放置(点),则编译器和JVM将找不到当前工作目录中可用的类。 '.' 代表当前工作目录。当前工作目录不是保存 .java 文件的文件夹,而是打开命令提示符的文件夹路径。

在类路径中包含多个路径的语法

我们必须用分号分隔符分隔每个文件夹位置。

java -cp ./folder1/*;./folder2/*;./folder3/* com.xyz.MainClass

注 –编译器和 JVM 从类路径中查找类所遵循的算法是先来先执行。

路径和类路径搜索算法优先级的区别

  • 命令提示软件会优先显示工作目录。在当前工作目录下,如果二进制文件不可用,只考虑路径变量。
  • 编译器和JVM首先查找类路径。
  • 如果未创建类路径,则只有它们会在当前工作目录中搜索。
  • 如果创建了类路径,他们不会查看当前工作目录,只会查看类路径文件夹。

注意—— 一般开发者社区推荐前4种类型,尽量避免使用环境变量window的永久设置。


目录
相关文章
|
21天前
|
消息中间件 Java Kafka
在Java中实现分布式事务的常用框架和方法
总之,选择合适的分布式事务框架和方法需要综合考虑业务需求、性能、复杂度等因素。不同的框架和方法都有其特点和适用场景,需要根据具体情况进行评估和选择。同时,随着技术的不断发展,分布式事务的解决方案也在不断更新和完善,以更好地满足业务的需求。你还可以进一步深入研究和了解这些框架和方法,以便在实际应用中更好地实现分布式事务管理。
|
7天前
|
Java
java实现从HDFS上下载文件及文件夹的功能,以流形式输出,便于用户自定义保存任何路径下
java实现从HDFS上下载文件及文件夹的功能,以流形式输出,便于用户自定义保存任何路径下
63 34
|
22天前
|
存储 缓存 安全
java 中操作字符串都有哪些类,它们之间有什么区别
Java中操作字符串的类主要有String、StringBuilder和StringBuffer。String是不可变的,每次操作都会生成新对象;StringBuilder和StringBuffer都是可变的,但StringBuilder是非线程安全的,而StringBuffer是线程安全的,因此性能略低。
42 8
|
19天前
|
安全 Java 开发者
Java中WAIT和NOTIFY方法必须在同步块中调用的原因
在Java多线程编程中,`wait()`和`notify()`方法是实现线程间协作的关键。这两个方法必须在同步块或同步方法中调用,这一要求背后有着深刻的原因。本文将深入探讨为什么`wait()`和`notify()`方法必须在同步块中调用,以及这一机制如何确保线程安全和避免死锁。
32 4
|
19天前
|
Java
深入探讨Java中的中断机制:INTERRUPTED和ISINTERRUPTED方法详解
在Java多线程编程中,中断机制是协调线程行为的重要手段。了解和正确使用中断机制对于编写高效、可靠的并发程序至关重要。本文将深入探讨Java中的`Thread.interrupted()`和`Thread.isInterrupted()`方法的区别及其应用场景。
22 4
|
17天前
|
Java 数据处理 数据安全/隐私保护
Java处理数据接口方法
Java处理数据接口方法
22 1
|
22天前
|
Java 开发者
在 Java 中,一个类可以实现多个接口吗?
这是 Java 面向对象编程的一个重要特性,它提供了极大的灵活性和扩展性。
42 1
|
26天前
|
Java Android开发
Eclipse Java 构建路径
Eclipse Java 构建路径
28 3
|
4月前
|
Java 开发者
奇迹时刻!探索 Java 多线程的奇幻之旅:Thread 类和 Runnable 接口的惊人对决
【8月更文挑战第13天】Java的多线程特性能显著提升程序性能与响应性。本文通过示例代码详细解析了两种核心实现方式:Thread类与Runnable接口。Thread类适用于简单场景,直接定义线程行为;Runnable接口则更适合复杂的项目结构,尤其在需要继承其他类时,能保持代码的清晰与模块化。理解两者差异有助于开发者在实际应用中做出合理选择,构建高效稳定的多线程程序。
62 7
|
2月前
|
Java 开发者
在Java多线程编程中,创建线程的方法有两种:继承Thread类和实现Runnable接口
【10月更文挑战第20天】在Java多线程编程中,创建线程的方法有两种:继承Thread类和实现Runnable接口。本文揭示了这两种方式的微妙差异和潜在陷阱,帮助你更好地理解和选择适合项目需求的线程创建方式。
26 3