关于CLASSPATH的一点感想

新手学习Vivado XDMA (1) - 配置详细分析 PCIe 在 Vivado XDMA 中的配置分析。 阅读详情

前面的例子只涉及到一个HelloJava.java文件,所以也没有牵涉到classpath。但是实际的编程中不可能有这么简单的程序,因此也常常需要关注classpath的设定。

oracle 官方文档对于classpath的定义是:

The class path is the path that the Java runtime environment searches for classes and other resource files. The class search path (more commonly known by the shorter name, “class path”) can be set using either the -classpath option when calling a JDK tool (the preferred method) or by setting the CLASSPATH environment variable.

这里有几个问题:

  1. 搜索什么?
    第三方或用户定义的.class,这里的路径就是告诉JDK命令如何去搜索到这些.class. 文档进一步给出解释: paths to the .jar, .zip or .class files , 并且详细指定了在各种情况下classpath具体的设置:
    1.1. .jar和.zip文件: 这时候path必须是.jar,.zip文件本身。
    1.2. .class文件(位于未命名的package): 包含.class文件的目录
    1.3. .class文件(位于命名的package): 包含package根节点的目录(请看下面的示例)
  2. 哪些命令会用到classpath
    java, javac, javadoc, jdb,javah
  3. 命令行选项与CLASSPATH环境变量的关系
    3.1. 命令行选项覆盖CLASSPATH环境变量
    3.2. 默认classpath为当前目录,注意设置-classpath或者CLASSPATH不会默认添加当前目录。

CLASSPATH和package

上面提到, 当需要搜索的.class位于命名的package时,指定classpath包含package根节点的目录。怎么理解?一个例子可能比抽象的解释更明了。

假设有一个类NavigationController位于package com.nvidia.navigation:

package com.nvidia.navigation;
......
public class NavigationController
{
  public static void main( String[] args ) { }
......
}

假设我们需要运行NavigationController该如何指定classpath?

java -classpath ??? com.nvidia.navigation.NavigationController

假设我们的NavigationController.class路径是C:\java\MyProject\bin\com\nvidia\navigation\NavigationController.class,
其中package名是com.nvidia.navigation,什么是package根节点? 显然是com,那么com的目录在哪里,是C:\java\MyProject\bin,那么我们就知道怎么设置这个classpath了:

java -classpath C:\java\MyProject\bin com.nvidia.navigation.NavigationController

有一点需要注意的就是package的名称必须是全称,不能像路径名一样分开,因此classpath只能指向package根节点的目录,而不能继续往下延伸!


classpath or cp

所有需要classpath的命令都能够识别-classpath 选项, 但不知道为什么java命令除了支持-classpath,还能够识别缩写-cp:

java -cp PATH1;PATH2 …


路径顺序

指定路径的次序具有重要影响。 Java虚拟机会按照CLASSPATH设置的次序从前往后开始搜索,只有在前面的路径搜索失败的时候才会继续向后面的路径搜索。

HFSS仿真PCB射频通路间的隔离度 本文介绍HFSS方式仿真带有器件的射频通路间的隔离度,可视为CST方式的补充,二者的结果相互参照。在前期靠仿真确认风险点时,可以作为一种较为直观和可信的手段。 阅读详情

相关推荐

433MHz无线通信

基本概念 工作频率:433.92MHz 调制方式:ASK/OOK,FSK,GFSK 现有遥控与接收器方案中,多数使用ASK/OOK调试方式。ASK即“幅移键控”又称为“振幅键控”,也有称为“开关键控”(通断键控)的,所以又记作OOK(On-Off keyed)信号。ASK是一种相对简单的调制方式。幅移键控(ASK)相当于模拟信号中的调幅,不同的是与载频信号相乘的是二进制数码。幅移就是把频...

沧海孤叶的博客 5万+

JAVA参数设置

例如应用1要使用a1.0.jar中的类G,应用2要使用 a2.0.jar中的类G,a2.0.jar是a1.0.jar的升级包,当a1.0.jar,a2.0.jar都在CLASSPATH中,虚拟机搜索到第一个包中的类G时就停止搜索,如果应用1应用2的虚拟机都从CLASSPATH中搜索,就会有一个应用得不到正确版本的类G。设置虚拟机可用内存堆的初始大小,缺省单位为字节,该大小为1024的整数倍并且要大于1MB,可用k(K)或m(M)为单位来设置较大的内存数。

顺其自然~专栏 3771

FreeSWITCH实战:5分钟搞定阿里云SDM(MRCP-SERVER)语音机器人搭建(含Docker部署技巧)

本文详细介绍了如何利用FreeSWITCH与阿里云SDM(MRCP-SERVER)快速搭建高可用语音机器人,包括Docker部署技巧、系统调优及高可用架构设计。通过实战案例和优化建议,帮助开发者5分钟内完成部署,提升语音交互系统的性能和稳定性。

stone的博客 504

点号java_java的classpath路径中加点号 ‘.’ 的作用

“.”表示当前目录,就是编译或者执行程序时你所在的目录下的.class文件;而JAvA_HOME表示JDK安装路径该路径在eclipse中是以vmarg的形式传入的,可以在任务管理器中打开命令行看出,现在来实验下,打印出当前路径,看看长什么样。AAA.java文件所在路径AAA.java中的内容:package Test;class AAA{public static void main(Stri...

weixin_35812176的博客 827

YOLOv11增量学习数据回放优化:解决新类别引入时的灾难性遗忘问题

本文提出了一种基于生成式潜在回放和提示学习的YOLOv11增量学习系统,旨在解决目标检测中的灾难性遗忘问题。系统采用改进的YOLOv11骨干网络,结合条件变分自编码器生成旧类别特征,并通过渐进式提示调优模块实现高效参数更新。关键技术包括:1) C3k2模块和C2PSA注意力增强特征提取;2) CLIP引导的VAE潜在空间数据回放;3) 类特定与超类别提示相结合的增量调优策略;4) 自适应特征金字塔与显式视觉中心融合机制。实验表明,该方法在保持原有检测性能的同时,显著降低了增量学习过程中的遗忘现象。

本博客聚焦 YOLOv11 全流程落地,涵盖架构优化、数据集处理、训练技巧与多场景部署,兼及国产数据库、Java 开发与 AI 模型应用,内容兼顾理论与工程实践,为开发者提供系统干货,助力高效提升技术能力。 2101

Qt6.10 | Qt Bluetooth 蓝牙

本文介绍了QtBluetooth模块的功能和使用方法,包括蓝牙API概述、构建配置(CMake/qmake)、权限管理、平台支持(Linux/macOS特殊处理)、日志设置及许可信息。重点说明Linux平台的后端选择机制,以及macOS上的依赖限制。最后提及蓝牙聊天示例,展示RFCOMM协议通信的实现。全文提供了蓝牙开发的技术要点和注意事项。

Qt历险记,专注Qt技术,三年医疗设备研发经验,1年机器视觉研发经验,半年柔性传感研发经验。 399

点号java_java的环境变量classpath中加点号 ‘.’ 的作用

java的环境变量classpath中加点号 ‘.’ 的作用“.”表示当前目录,就是编译或者执行程序时,你的.class文件所在的目录;当找.class文件时,先去“.”路径下找,找不到的话,在去“;”后的下一个路径找而JAVA_HOME表示JDK安装路径;该路径在eclipse中是以vmarg的形式传入的,可以在任务管理器中打开命令行看出,现在来实验下,打印出当前路径,看看长什么样。AAA.ja...

weixin_33325305的博客 750

uniapp - web-view嵌套H5网页白屏问题,<web-view>页面跳转出现白屏情况,强力解决uniapp嵌套webview页面时出现无法加载并白屏(无论本地还是线上H5网页链接都能解决)

uniapp微信小程序,uniapp APP端,uni-app web-view嵌套H5项目白屏问题分析及解决,uniapp嵌套webview页面时,出现白屏,uniapp <web-view>页面跳转出现白屏解决方法,uniapp <web-view>页面跳转出现白屏解决方法,解决uniapp的web-view打开网页在老手机上出现白屏的问题,uni-app web-view白屏处理,引入本地网页白屏,WebView 加载不出网页,一片空白webview白屏加载不出来,使用webview加载链接后白屏,u

🏆 前端领域优质创作者 1万+

java的环境变量classpath中加点号 ‘.’ 的作用

java的环境变量classpath中加点号 ‘.’ 的作用 “.”表示当前目录,就是编译或者执行程序时,你的.class文件所在的目录; 当找.class文件时,先去“.”路径下找,找不到的话,在去“;”后的下一个路径找 而JAVA_HOME表示JDK安装路径; 该路径在eclipse中是以vmarg的形式传入的,可以在任务管理器中打开命令行看出,现在来实验下,打印出当前路径,看...

weixin_34050005的博客 818

046篇:数据统计:分组、求和、平均值、最大最小值

本文介绍了在RPA中实现数据分组统计的方法。通过字典+循环组合,可以完成按单字段或多字段的分组聚合操作,包括求和、计数、求平均值及最大/最小值等。文章详细讲解了分组统计的原理,并提供了单级分组、多级分组的具体实现步骤,最后通过销售数据按月分组的实战案例,演示了如何从原始数据到生成汇总报表的完整流程。这些方法可以灵活应用于各类数据统计分析场景。

weixin_59649563的博客 214

AUTOSAR知识点 之 XCP (二):XCP基础概念

学习XCP的过程中,对XCP的基本概念要做一个全面的认知,因为里面有很多缩写以及难以理解的点,假设对此模模糊糊一知半解,那么对整个协议栈的认知会遇到极大的障碍。XCP的信号流传输图示如下XCP 标准主要分为 5 个部分:这部分提供了对于协议的一个概况介绍,包括 XCP 的功能和基础性内容。这部分内容对协议层进行了详细的规范和说明。

梦想技术家 2769

ClassPath的意义与坑

ClassPath的意义和坑 ​ 大家都知道,安装JDK需要配置环境变量,环境变量里面有一个classpath,那么这玩意有什么用呢,为什么有的说要配置,有的说不用配置。 1、为什么要配置classpath,为什么又不需要配置classpath 为什么要配置classpath 在JDK1.5版本之前,运行class文件必须需要配置classpath,因为运行的时候需要用到%JAVA_HOME%...

啥也不会的程序员 1192

MIL图像处理那些事:MIL的安装和MIL工具箱

MIL图像处理那些事:MIL的安装和测试,如何用C#使用MIL

十多年IT经验,专注机器视觉,智能制造半导体行业 5273

12.16(Java 访问权限控制, ClassPath,ibatis调试心得)

Java 访问权限控制    上午看了会儿java的访问权限控制,有了这些感想:访问权限控制是编译器强加的规则,目的是问了强迫程序员设计好自己的程序由于java当初是被设计为在互联网上运行的,因此它所面对的环境就很复杂,因此需要更强的界限说明,有些类似于随社会的进步,法律越来越复杂一样。也因为这个原因,java很适合庞大的企业级程序。命名空间(namespace)很

jubincn的专栏 1561

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

关于java环境变量配置的一点点心得

今天工作做完没事就想用一下命令行来编译和运行java程序,由于工作中都用IDE来开发,今天一用才发现有那么多问题。 首先,使用命令提示行来操作的话就要保证环境变量中classpath,path,java_home都是系统变量里面的,因为使用命令提示行的话他访问的是系统变量。 其次,在classpath的最前面加上“.;”这样在执行java 命令的时候如果是在java文件的根目录的话

kingsam_8405的专栏 474

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

2021-10-26 套餐一实战训练营感想

首先很荣幸参加了优快云的第八期实战任务训练营,可以让我有机会和大佬们学习到一些技巧,并且给我这个小白一个明确的学习方向,全方面建构自己的知识框架。 其次,我来介绍一下我的情况。我是一名软件学院在读的大一学生,在学校中只接触过C语言。但是对JAVA有着浓厚的求学兴趣,但一直苦于找不到方法去全方面的了解到JAVA真正的学习方法。之前在B站会看一些老师的讲解,但优秀的老师很多,讲课大纲和使用的软件不统一会导致我出现选课困难以及都想听的问题。但今天的第一天实训,让我摆脱了这些困难...

L_Claudia_y的博客 183

初次使用心得

JAVA环境变量配置 在编写程序时,我们通常都会遇到需要进行环境变量配置的情况,这里我就结合自己第一次进行环境变量配置的情况,和大家分享一下,进行环境变量配置的过程和一些心得。 完成jdk环境的安装和配置,并通过windows命令行的set命令验证环境变量内容 (1)首先,下载JDK安装包,到官网 http://www.oracle.com/technetwork/java/jav...

杨威的博客 294

20145209刘一阳《JAVA程序设计》第1周学习总结

20145209刘一阳《JAVA程序设计》第1周学习总结 本周任务 了解Java基础知识 了解JVM、JRE与JDK,并下载、安装、测试JDK 了解PATH、CLASSPATH、SOURCEPATH的作用并会设置 Intellj IDEA 简易教程 Java程序设计的DOS命令基础 进入vim 1.使用vim命令进入vim界面 vim后面加上你要打开的已存在的文件名或者不存在(则作为新建文件)的文...

weixin_34235457的博客 113

安装JDK,配置环境变量有感

安装JDK,配置环境变量有感 前天无事,心血来潮给公司新配的笔记本(win10系统64位)装开发工具,然后不可避免的就装了JDK,顺理成章的需要配置环境变量,结果就出问题了。 配置完成,测试时,在dos命令窗口输入java命令执行没问题,输入javac则提示“不是内部或外部命令,也不是可运行的程序或批处理文件”,重新检查了一遍配置信息: 1、新建系统变量JAVA_HO...

weixin_30585437的博客 83

合工大JAVA实验四web_合工大JAVA实验报告.doc

专业整理WORD完美格式《Java技术》实验报告实验一: 2016 年10 月 11 日学院计算机与信息学院专业班级姓名成绩课程名称Java技术实验项目名 称实验一 Java开发环境的安装与配置指导教师教师评语教师签名:年 月 日一、实验目的掌握JDK的安装步骤(有条件的话可以...

weixin_39564187的博客 1662

Java环境配置(保姆级别手把手教程~)

Java环境配置 保姆级别从0开始配置环境 0.前言 本教程记录记录了初学以来所有的内容以及感想,记录下自己的学习轨迹,欢迎大家一同讨论学习中发现的问题~ 进入正题,为什么要配置环境呢,这就好比你喜欢的爱豆想开一场演唱会,这需要一个场地呀,这个场地也就是Java运行环境,只有配置了环境,Java代码才能正常运行。 1.准备工作 .JDK,IDEA的下载 下载链接:https://pan.ba...

07gamer的博客 765

而今迈步从头越|nacos逼我在mac上重新安装java8与环境变量的配置

而今迈步从头越|mac安装java、配置环境变量

北溟南风起 4640

最强JDK介绍以及安装流程,包括切换不同的版本

本人深知编程之艰难,原以为困难在最后等着我,没想到半道崩殂。下面根据我踩过的坑,将给大家详细介绍JDK的使用。

m0_63167423的博客 214

hadoop hbase hive搭建运行所遇到的问题

这是我遇到的三个比较棘手的问题,其实也不是什么大问题,但是又很致命,共勉

qq_32021523的博客 548

Linux下配置JDK的环境变量

前言 今天又收获了很多,本来觉得只是一个环境配置的问题,没想到引出了一连串的配置,真的是接触的越多、尝试的越多,收获的越多! 配置过程 第一步: JDK的下载地址 我下载的是tar.gz文件,也可以下载rmp文件,根据需要进行下载 我的jdk版本是jdk1.8,大家选择自己想要的版本进行下载即可,下载到自己Windows系统的任意位置,只要自己能找到就可以。 第二步: 安装WinSCP,如果电脑...

听一首歌♫ 456

Ubuntu安装离线JDK

先是下了bin版本,但是要自己配路径,嫌麻烦,就去下来一个rpm版本,不过死活安装不上,后来发现是因为Ubuntu不能直接装rpm(网上别人说的),要先转换为.deb文件。 1.安装alien sudo apt-get install alien 2.将rpm文件转为deb文件 sudo alien --scripts --keep-version -d xxxx.rpm 3.安装de...

weixin_30458043的博客 200

tomcat安装心得

不要放在C盘的里面,会报错 可以这样放 tomcat放好后配置环境变量 1 在”系统变量“中添加系统变量CATALINA_BASE,CATALINA_HOME; 变量名:CATALINA_BASE 变量值: //Tomcat安装目录 2在path里面 4、此处还需修改ClassPath和Path的变量值。 在ClassPath的变量值中加入:%CATALINA_HOME%\li...

FAFU3176016075的博客 378
上一篇: 命令行编译运行Java程序
下一篇: 运行时类型信息RTTI
小马识图
博客等级 码龄18年 8粉丝 30原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值