今天打算开始看一本《算法(第4版)》的算法书,然后开配置环境的时候出现了问题。
由于这本书的需要用到algs4.jar包,然后在编写代码的过程中会出现
BinarySearch.java:1: 错误: 程序包edu.princeton.cs.algs4不存在
然后我查找解决办法的时候发现了这位老哥的文章
《算法(第4版)》-使用algs4.jar在IntelliJ IDEA开发程序 配置过程
https://blog.csdn.net/qq_34885598/article/details/86375393
然后我发现出现了文章中提到了异常
Exception in thread “main” java.lang.NoClassDeFoundErrot:edu/pricedon
经过仔细的检查,发现我把环境变量中的PATH和CLASSPATH看成是一个东西了。
然后我赶紧查一下两者有什么区别?
环境变量中设置path和classpath的区别
java的classpath和path理解
环境变量中设置path和classpath的区别
总结来说就是三点
- classpath与import关键字是相关的,程序编译的时候,遇到import关键字,编译器就会到classpath参数对应的路径中去寻找对应的.class类文件,将其倒入。
- 编译器解析这条import语句的时候会将“.”解析为斜杠“/”表示路径
- path的作用就是配置jdk的bin目录,配置完成之后可以在任意目录下使用javac java javadoc这些命令,而不必每次切换到bin目录下
配置完成之后,打算在cmd中运行一下程序,结果又出现了小状况。
提示:找不到或无法加载主类 和 系统找不到指定文件
也就是说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同一个目录下,要不然还是会报找不到指定文件错误!
小结:
- 查阅文章的时候要多多注意细微的差别:CLASSPATH和PATH。
- 知道了在cmd运行class文件的时候,需要到.class包的同级目录下,例如
D:\Environment\algs4_test\out\production\algs4_test>java cn/peiro/algs_chapter01/part01/BinarySearch largeT.txt < largeW.txt
中D:\Environment\algs4_test\out\production\algs4_test
- 把
package cn.peiro.algs_chapter01.part01;
中的“.”变成“/”加到类名开头 - 想要引用外部文件不那么麻烦,可以在包的同级目录下存放引用文件,出错的时候可以看一下实际文件夹中是否存在引用文件