笔者最近在看 Algorithms (Fourth Edition) 这本书,想做一下练习,于是开始配这本书写的环境。这书的练习都是 Java写的,需要调用一些作者自己写的类。作者在官网上给出了已经包括全部类的 jar 包,然而笔者发现导入之后并不能用,一直报错,属实折磨,在网上找到的资料也并不能解决笔者遇到的问题。最后还是参考作者在网站上写的内容稍加修改解决了。


下载 algs4.jar

访问 Algorithms 这本书的官网,在左侧的导航栏选择 Code 页面。

一直下滑,直到找到高亮的 algs4.jar ,点击超链接即可下载。

下载好后要将得到的 algs4.jar 放在指定目录下,官网给出的目录为:

1
/usr/local/lift/lib/algs4.jar

这个是使用作者提供的自动安装工具下载的目录。考虑到境外网站一向不稳定,笔者并没有安装和使用这个工具。

笔者下载完毕 algs.jar 后,将其放在的目录为:

1
/Users/"yourUserName"/Library/Java/Extensions/algs4.jar

没有文件夹的其实可以新建一个。

配置 IDEA 环境

打开 IDEA,新建一个项目。笔者这里新建的项目中的文件为 Test.java

点击顶部的 File 选项卡,在下拉菜单中点击 Project Structure

点击 Library 选项卡,选择加号,New Project Library 。在目录中找到 algs4.jar 并选中,添加成功后选择 ApplyOK 确认。

在右上角调整好正确的 Run/Debug Configuration 。此时在 Test.java 中写入以下代码:

1
import edu.princeton.cs.algs4.*;

如果没有报错,即配置成功。

但是到这里程序依然是无法运行的,因为我们需要在命令行对程序进行编译和运行。如果此时直接在命令行输入 javac Test.java 进行编译,会有以下报错:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
import edu.princeton.cs.algs4.*;
^
Test.java:6: 错误: 找不到符号
Point2D[] ps = new Point2D[N];
^
符号: 类 Point2D
位置: 类 Test
Test.java:6: 错误: 找不到符号
Point2D[] ps = new Point2D[N];
^
符号: 类 Point2D
位置: 类 Test
Test.java:9: 错误: 找不到符号
double x = StdRandom.uniform();
^
符号: 变量 StdRandom
位置: 类 Test
Test.java:10: 错误: 找不到符号
double y = StdRandom.uniform();
^
符号: 变量 StdRandom
位置: 类 Test
Test.java:11: 错误: 找不到符号
ps[i] = new Point2D(x, y);
^
符号: 类 Point2D
位置: 类 Test
6 个错误

所以需要继续配置 zsh

配置 zsh 环境变量

其实这里可以不配置环境变量,不过每次命令行编译都需要输入以下一大长串。

1
2
3
$ javac -cp .:/Users/"yourUserName"/Library/Java/Extensions/algs4.jar Test.java

$ java -cp .:/Users/"yourUserName"/Library/Java/Extensions/algs4.jar Test

这可真是太不方便了。虽然可以自己写个脚本,但还是很麻烦。根据作者官网的说明,可以配置一下环境变量,然而作者写的说明并不包括 zsh 的配置。所以这里笔者给出 zsh 的配置说明。

将以下代码加入到文件 ~/.zshrc 中(如果没有就自己建一个)。

1
export CLASSPATH=$CLASSPATH:/Users/"yourUserName"/Library/Java/Extensions/algs4.jar

这里的 algs.jar 的路径要写对。如果你一直按照我的说明来,那就是这个路径。如果你有自己的想法,那写你自己的路径。

配置完成后,在 Test.java 文件目录中打开终端,输入以下命令:

1
2
3
$ javac Test.java

$ java Test

如果没有报错,成功运行,那么恭喜你,配置完成。