在 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的永久设置。


目录
相关文章
|
8月前
|
Java
Java语言实现字母大小写转换的方法
Java提供了多种灵活的方法来处理字符串中的字母大小写转换。根据具体需求,可以选择适合的方法来实现。在大多数情况下,使用 String类或 Character类的方法已经足够。但是,在需要更复杂的逻辑或处理非常规字符集时,可以通过字符流或手动遍历字符串来实现更精细的控制。
517 18
|
8月前
|
存储 Java 索引
用Java语言实现一个自定义的ArrayList类
自定义MyArrayList类模拟Java ArrayList核心功能,支持泛型、动态扩容(1.5倍)、增删改查及越界检查,底层用Object数组实现,适合学习动态数组原理。
376 4
|
8月前
|
IDE JavaScript Java
在Java 11中,如何处理被弃用的类或接口?
在Java 11中,如何处理被弃用的类或接口?
386 5
|
8月前
|
Java 编译器 Go
【Java】(5)方法的概念、方法的调用、方法重载、构造方法的创建
Java方法是语句的集合,它们在一起执行一个功能。方法是解决一类问题的步骤的有序组合方法包含于类或对象中方法在程序中被创建,在其他地方被引用方法的优点使程序变得更简短而清晰。有利于程序维护。可以提高程序开发的效率。提高了代码的重用性。方法的名字的第一个单词应以小写字母作为开头,后面的单词则用大写字母开头写,不使用连接符。例如:addPerson。这种就属于驼峰写法下划线可能出现在 JUnit 测试方法名称中用以分隔名称的逻辑组件。
356 4
|
8月前
|
JSON 网络协议 安全
【Java】(10)进程与线程的关系、Tread类;讲解基本线程安全、网络编程内容;JSON序列化与反序列化
几乎所有的操作系统都支持进程的概念,进程是处于运行过程中的程序,并且具有一定的独立功能,进程是系统进行资源分配和调度的一个独立单位一般而言,进程包含如下三个特征。独立性动态性并发性。
415 1
|
8月前
|
Java Go 开发工具
【Java】(8)正则表达式的使用与常用类分享
正则表达式定义了字符串的模式。正则表达式并不仅限于某一种语言,但是在每种语言中有细微的差别。
521 1
|
8月前
|
存储 Java 程序员
【Java】(6)全方面带你了解Java里的日期与时间内容,介绍 Calendar、GregorianCalendar、Date类
java.util 包提供了 Date 类来封装当前的日期和时间。Date 类提供两个构造函数来实例化 Date 对象。第一个构造函数使用当前日期和时间来初始化对象。Date( )第二个构造函数接收一个参数,该参数是从1970年1月1日起的毫秒数。
339 0
|
Java
JAVA方法的定义
JAVA方法的定义
332 0
|
存储 JSON Java
《从头开始学java,一天一个知识点》之:方法定义与参数传递机制
**你是否也经历过这些崩溃瞬间?** - 看了三天教程,连`i++`和`++i`的区别都说不清 - 面试时被追问&quot;`a==b`和`equals()`的区别&quot;,大脑突然空白 - 写出的代码总是莫名报NPE,却不知道问题出在哪个运算符 🚀 这个系列就是为你打造的Java「速效救心丸」!我们承诺:每天1分钟,地铁通勤、午休间隙即可完成学习;直击痛点,只讲高频考点和实际开发中的「坑位」;拒绝臃肿,没有冗长概念堆砌,每篇都有可运行的代码标本。上篇:《输入与输出:Scanner与System类》 | 下篇剧透:《方法重载与可变参数》。
392 25
|
安全 Java 编译器
杭州 【Java基础知识 11】java泛型方法的定义和使用(学习+改进+自己理解,想法) (借鉴-侵-删)
杭州 【Java基础知识 11】java泛型方法的定义和使用(学习+改进+自己理解,想法) (借鉴-侵-删)
240 1