踩坑记录

本文详细记录了《算法(第4版)》一书中使用algs4.jar包在IntelliJ IDEA环境下的配置过程,包括解决程序包不存在、环境变量设置、cmd运行class文件等问题,分享了正确的classpath与path设置方法及常见错误排查技巧。

今天打算开始看一本《算法(第4版)》的算法书,然后开配置环境的时候出现了问题。

由于这本书的需要用到algs4.jar包,然后在编写代码的过程中会出现

BinarySearch.java:1: 错误: 程序包edu.princeton.cs.algs4不存在

然后我查找解决办法的时候发现了这位老哥的文章
《算法(第4版)》-使用algs4.jar在IntelliJ IDEA开发程序 配置过程
https://blog.youkuaiyun.com/qq_34885598/article/details/86375393

然后我发现出现了文章中提到了异常

Exception in thread “main” java.lang.NoClassDeFoundErrot:edu/pricedon

经过仔细的检查,发现我把环境变量中的PATHCLASSPATH看成是一个东西了。

然后我赶紧查一下两者有什么区别?
环境变量中设置path和classpath的区别
java的classpath和path理解
环境变量中设置path和classpath的区别
总结来说就是三点

  1. classpath与import关键字是相关的,程序编译的时候,遇到import关键字,编译器就会到classpath参数对应的路径中去寻找对应的.class类文件,将其倒入。
  2. 编译器解析这条import语句的时候会将“.”解析为斜杠“/”表示路径
  3. path的作用就是配置jdk的bin目录,配置完成之后可以在任意目录下使用javac java javadoc这些命令,而不必每次切换到bin目录下

配置完成之后,打算在cmd中运行一下程序,结果又出现了小状况。
出错图1

提示:找不到或无法加载主类 和 系统找不到指定文件
也就是说java cn\peiro\algs_chapter01\part01\BinarySearch largeT.txt < largeW.txt这里出错了,然后想起导入包的时候,编译器会将“.”解析为斜杠“/”表示路径,所以这里应该是改为
java cn/peiro/algs_chapter01/part01/BinarySearch largeT.txt < largeW.txt

在这里插入图片描述
改正后发现还是有问题,我看了一下我的目录结构
在这里插入图片描述

这里我猜想可能是 那两个txt也需要使用到cn\peiro\algs_chapter01\part01\BinarySearch

结果真的成功编译了
在这里插入图片描述
到了这里,我想能不能省略掉cn\peiro\algs_chapter01\part01\BinarySearch,尝试着把那俩个txt文件拖到src文件下,跟包名的目录同级,然后重新编译尝试一下。(这里注意的是,一定要把out文件删掉)
在这里插入图片描述
这个时候cn文件夹跟俩个txt文件都在同一个目录下,接着测试一下能不能成功
在这里插入图片描述
成功!
这里要注意的是,out文件最好先删除掉,确保那俩个文件夹存在跟cn同一个目录下,要不然还是会报找不到指定文件错误!

小结:

  1. 查阅文章的时候要多多注意细微的差别:CLASSPATH和PATH。
  2. 知道了在cmd运行class文件的时候,需要到.class包的同级目录下,例如D:\Environment\algs4_test\out\production\algs4_test>java cn/peiro/algs_chapter01/part01/BinarySearch largeT.txt < largeW.txtD:\Environment\algs4_test\out\production\algs4_test
  3. package cn.peiro.algs_chapter01.part01;中的“.”变成“/”加到类名开头
  4. 想要引用外部文件不那么麻烦,可以在包的同级目录下存放引用文件,出错的时候可以看一下实际文件夹中是否存在引用文件
### Detectron2 使用过程中的常见问题与解决方案 #### 一、编译错误 当尝试编译 Detectron2 的自定义操作时,可能会遇到 `nvcc.exe` 编译失败的情况。具体表现为以下错误消息: ``` error: command 'C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.3\bin\nvcc.exe' failed with exit status 1 ``` 此问题是由于 CUDA 版本兼容或者某些代码逻辑符合当前环境所致[^3]。 **解决方法:** 可以修改相关源码文件以适配当前环境。例如,在路径 `detectron2/layers/csrc/nms_rotated/` 下的 `nms_rotated_cuda.cu` 文件中,注释掉可能导致冲突的部分代码片段。以下是具体的代码调整示例: ```cpp // 注释掉可能引发问题的代码段 /* if (condition) { // 可能存在版本差异的实现细节 } */ ``` 通过上述方式能够有效规避因 CUDA 工具链版本同而导致的编译异常。 --- #### 二、CUDA 和 cuDNN 配置当 在 Windows 系统上安装 PyTorch 或其扩展库(如 torch-scatter)并集成到 Detectron2 中时,可能出现 CUDA 或 cuDNN 匹配的问题。典型表现形式为运行时报错提示找到特定函数或动态链接库加载失败[^1]。 **解决策略:** 确认所使用的 CUDA 和 cuDNN 版本是否满足官方文档的要求,并重新构建依赖关系树。推荐按照以下步骤验证环境一致性: - 安装与目标框架相适应的基础组件; - 测试基础张量运算功能正常运作后再引入高级模块。 --- #### 三、模型推理阶段性能优化足 对于大规模数据集上的实时处理需求而言,默认参数设置下的速度往往难以达到预期效果[^2]。 **改进措施:** 针对硬件资源特性定制化调优方案,比如启用混合精度训练(Mixed Precision Training),减少内存占用的同时提升计算效率;另外还可以考虑利用 TensorRT 进行进一步加速部署流程。 --- #### 四、多机分布式训练同步障碍 跨节点间通信延迟过高会显著降低整体收敛速率甚至造成死锁现象发生。 **应对之策:** 合理规划网络拓扑结构以及选用高效的集合通讯算法来最小化交互开销;同时也要注意检查防火墙规则以免意外阻断必要的端口连接请求。 --- ### 总结 以上列举了几类较为常见的 Detectron2 实践难题及其对应的处置建议。实际开发过程中还需依据具体情况灵活运用这些技巧加以克服困难。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值