java中点的作用_【Dongle】【Java】classpath配置中点“.”作用

Java Classpath详解
本文深入解析Java中的classpath环境配置,包括其作用、如何正确配置以及使用.表示当前目录的意义,帮助读者理解并掌握Java项目的编译与运行原理。

之前写过一篇关于classpath的文章【Dongle】【Java】基础(三)之classpath,最近学习到新的内容,我觉得有必要提示出来:classpath环境配置中“.”表示当前目录(定位目录)。之前的也不能说错,只是说明不到点上。

这个问题还要从视频上意识到的,视频中的classpath相当的少,为什么我的却很多很多呢?由于我之前就是每创建一个文件夹就去classpath里添加目录的,自己也感觉挺累的,这只是添加几个,如果是创建成百上千,甚至上亿的文件夹,那么就需要添加上亿个classpath目录?所以当看到视频中的classpath配置时,立刻就意识到自己的问题了。

视频中的格式如下(自己修改后的):

0818b9ca8b590ca3270a3433284dd417.png

那么这些都是什么意思呢?首先来先看第一个目录,那是具体的目录。是用来java编译以及java运行需要的。通俗一些,就是java编译需要从“E:\IT\实践\J2SE”目录面去找"*.java"文件,如果找不到就会出错。开始有想到如果是不同文件夹怎么办?如果是J2SE目录的上级目录或者是同级目录,则需要重新添加目录才能正常编译。如果是J2SE的子目录(子文件夹),那么只要定位到子目录就可以了,例如:

0818b9ca8b590ca3270a3433284dd417.png

就如同上面,在你所示的当前文件夹中只要能找到java文件就可以进行编译,因为当前文件夹TestTeacher在“E:\IT\实践\J2SE”目录下。

编译可以了,那么运行是怎么解释的,记得说需要找到相关目录才能运行啊,这也是我之前为什么理解成每创建一个文件夹,就得去classpath环境配置中去进行配置。然后才注意到“.”的问题,那么这个“.”有什么意义?这时候就考验自己的耐心了,如果你通过百度就能查出来,如果不百度,在视频中也有提到:“定位当当前文件夹(目录)”。这样一来一个“.”就可以替换所有的目录了,只要你能定位到class文件的目录位置,就能实现运行。否则就会提示:“找不到或无法加载主类TestTeacher(据实际提示)”。

0818b9ca8b590ca3270a3433284dd417.png

然后配置正确后,如果你的java文件不存在异常,那么就会运行成功:

0818b9ca8b590ca3270a3433284dd417.png

classpath环境配置中的“E:\IT\实践\J2SE\TestPackage\test.jar”是关于包打包的目录路径,后面会说明。

说来也有意思,因为视频中classpath环境配置与这些问题没有在一起讲,可能是导师认为都会明白,所以不讲了,后来就有同学如像我一样,下来问了,然后老师就顺带解释了。或者是导师故意留下的悬疑,看是否有学生能发现这个问题不。嘿嘿~

总之,学习是要会学习,不要“太老实”,否则学习不到课本之外的知识!

<think>我们正在分析一个使用argparse模块的代码片段。这段代码的功能是创建一个命令行参数解析器,并添加特定的参数,然后解析这些参数。代码分三个步骤:1.创建ArgumentParser对象:使用描述'VDMMonitor'初始化一个解析器对象。2.通过一个名为I2C_Dongle_Factory的工厂类的类方法(add_dongle_arguments)来添加参数。这里假设I2C_Dongle_Factory是一个已经定义好的类,其方法add_dongle_arguments用于向解析器添加与I2C适配器相关的参数。3.调用parse_args方法解析命令行参数,并将结果存储在args变量中。由于代码中使用了argparse模块,因此需要先导入argparse。另外,I2C_Dongle_Factory应该是在其他地方定义的。下面我们详细解释每一部分:1.`parser=argparse.ArgumentParser(description='VDMMonitor')`-创建一个ArgumentParser对象,用于处理命令行参数。-description参数提供了一个简短的描述,当用户使用-h或--help时会显示。2.`I2C_Dongle_Factory.add_dongle_arguments(parser)`-这里调用了I2C_Dongle_Factory的类方法add_dongle_arguments,并将之前创建的解析器对象作为参数传入。-这个方法的目的是向解析器添加一组与I2C适配器(Dongle)相关的参数。具体添加了什么参数取决于该方法的实现。例如,可能添加了如--device、--address等参数。3.`args=parser.parse_args()`-解析命令行参数,并将解析结果存储在args对象中,之后可以通过args来访问各个参数的值。注意:由于我们没有I2C_Dongle_Factory的具体实现,我们只能假设它的add_dongle_arguments方法已经定义好,并且能够正确地往parser里添加参数。为了更清晰地理解,我们可以模拟一个简单的I2C_Dongle_Factory类,展示如何添加参数:```pythonimportargparse#假设的I2C_Dongle_Factory类classI2C_Dongle_Factory:@classmethoddefadd_dongle_arguments(cls,parser):#添加一个设备名的参数,例如串口设备parser.add_argument('--device',type=str,default='/dev/ttyUSB0',help='I2Cdongledevicename')#添加一个I2C地址参数,16进制parser.add_argument('--address',type=str,help='I2Cdeviceaddress(hex)',required=True)#实际代码开始parser=argparse.ArgumentParser(description='VDMMonitor')I2C_Dongle_Factory.add_dongle_arguments(parser)args=parser.parse_args()#使用解析后的参数print(args.device)print(args.address)```在这个例子中,我们定义了一个I2C_Dongle_Factory类,它有一个类方法add_dongle_arguments,向解析器添加了两个参数:--device和--address。当运行程序时,我们可以在命令行中指定这些参数。执行代码示例:```pythonscript.py--device/dev/ttyUSB1--address0x50```输出:```/dev/ttyUSB10x50```注意事项:-如果用户没有提供必需的参数(如address是required=True),parse_args()会报错并显示帮助信息。-使用argparse可以轻松处理命令行参数,是编写命令行工具的常用模块。所以,原代码片段的目的就是创建一个包含I2C适配器相关参数的命令行解析器,然后解析用户输入。§§相关问题§§:1.如何在argparse中设置一个参数,使其只能接受整数?2.如何为argparse添加一个布尔标志(flag)参数,例如--verbose?3.当用户输入无效参数时,argparse如何提供友好的错误信息?4.在argparse中如何添加一个带选项列表的参数(例如--color{red,green,blue})?</think> 这段代码使用了 Python 的 `argparse` 模块来创建命令行参数解析器,专门用于处理与 **I2C Dongle** (I2C适配器) 相关的命令行参数。以下是详细分析: ### 代码功能解析 ```python # 创建名为 'VDM Monitor' 的命令行参数解析器 parser = argparse.ArgumentParser(description='VDM Monitor') # 通过工厂类添加特定于 I2C Dongle 的参数 I2C_Dongle_Factory.add_dongle_arguments(parser) # 解析命令行参数并将结果存储在 args 变量中 args = parser.parse_args() ``` #### 1. `argparse.ArgumentParser` - 创建命令行参数解析器的核心对象 - `description='VDM Monitor'`:设置程序的描述文本,在用户使用 `-h` 或 `--help` 查看帮助时显示 - 典型应用模式: ```python import argparse parser = argparse.ArgumentParser(description='程序描述') ``` #### 2. `I2C_Dongle_Factory.add_dongle_arguments(parser)` - **工厂模式应用**:`I2C_Dongle_Factory` 是一个工厂类,用于抽象化不同型号 I2C 适配器的参数配置 - **参数封装**:该方法将特定于硬件的参数统一添加到解析器中 - 可能的实现结构: ```python class I2C_Dongle_Factory: @staticmethod def add_dongle_arguments(parser): # 添加通用参数 parser.add_argument('--bus', type=int, default=1, help='I2C bus number') # 添加型号特定参数 parser.add_argument('--model', choices=['A', 'B', 'C'], required=True) parser.add_argument('--speed', type=int, choices=[100, 400, 1000], default=100) ``` #### 3. `args = parser.parse_args()` - 解析用户通过命令行输入的参数 - 结果存储在 `args` 对象中,可通过属性访问 ```python print(args.bus) # 访问 --bus 参数的值 print(args.speed) # 访问 --speed 参数的值 ``` ### 设计特点与最佳实践 1. **职责分离**: - `argparse` 负责核心解析逻辑 - 硬件特定参数由工厂类管理 2. **参数类型验证**: ```python parser.add_argument('--speed', type=int, choices=[100, 400, 1000]) ``` - `type=int` 自动转换类型 - `choices` 限制有效输入值 3. **错误处理**: - 无效参数自动生成清晰的错误消息 - 帮助信息完整展示可用选项 4. **默认行为**: ```python parser.add_argument('--timeout', type=float, default=2.5) ``` 提供合理的默认值减少用户输入 ### 完整使用示例 ```python import argparse # 模拟 I2C Dongle 工厂类 class I2C_Dongle_Factory: @staticmethod def add_dongle_arguments(parser): parser.add_argument('--bus', type=int, default=1, help='I2C bus number (default: 1)') parser.add_argument('--address', type=str, required=True, help='Device I2C address in hex') parser.add_argument('--model', choices=['FT232H', 'CP2112', 'MCP2221'], default='FT232H') if __name__ == "__main__": # 创建解析器 parser = argparse.ArgumentParser(description='VDM Monitor') # 添加硬件特定参数 I2C_Dongle_Factory.add_dongle_arguments(parser) # 添加通用参数 parser.add_argument('-v', '--verbose', action='store_true', help='Enable verbose mode') # 解析参数 args = parser.parse_args() print(f"Using I2C bus: {args.bus}") print(f"Device address: {args.address}") print(f"Adapter model: {args.model}") if args.verbose: print("Verbose mode enabled") ``` 运行示例: ``` $ python vdm_monitor.py --address 0x48 Using I2C bus: 1 Device address: 0x48 Adapter model: FT232H $ python vdm_monitor.py --help usage: vdm_monitor.py [-h] [--bus BUS] --address ADDRESS [--model {FT232H,CP2112,MCP2221}] [-v] VDM Monitor options: -h, --help show this help message and exit --bus BUS I2C bus number (default: 1) --address ADDRESS Device I2C address in hex --model {FT232H,CP2112,MCP2221} -v, --verbose Enable verbose mode ``` ### 应用场景 该设计模式特别适用于: 1. 需要支持多种硬件设备的应用程序 2. 硬件抽象层(HAL)实现 3. 可插拔设备驱动程序 4. 需要为不同用户提供自定义参数的开发工具 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值