CS61B-sp21的环境配置

CS61B-sp21的环境配置
Carkree前言
最近在学习 CS61B: Data Structures,最初我使用的是 Spring 2024 版本的课程资料,但由于该版本未提供公开的自动评分器,因此无法通过 Gradescope 提交作业并获得自动评分。所以就切换到了Spring 2021的版本,并写个文章简单记录一下配置的过程
文章如有错误请指出,谢谢
课程网站
课程主页:
- CS 61B Data Structures Spring 2021
https://sp21.datastructur.es/
本文同时参考了以下资料:
环境配置
课程通常会提供一组起始代码,学生需要在指定文件中实现或修改代码以完成任务。
这些起始文件托管在 GitHub 上,因此在开始作业之前,需要配置开发环境。
必须完成下面的第一周的两个Lab。这两个 Lab 提供了完整的环境配置说明。不过,由于其面向UCB在校学生,其中部分步骤对自学者并不适用,因此阅读时可能会产生一定困惑
1 安装 IntelliJ IDEA
首先需要从 JetBrains 官网下载 IntelliJ IDEA。
自 2025 年 12 月起,JetBrains 已取消Community Edition 与 Ultimate Edition 的版本区分,官网仅提供统一安装包。
完成安装后,需要按照官方文档安装两个课程插件
建议按课程文档一步一步完成:
https://sp21.datastructur.es/materials/lab/lab1setup/lab1setup#f-installing-the-intellij-cs-61b-plugins
需要安装的插件:
- CS 61B Plugin
- Java Visualizer
其中 Java Visualizer 在后续学习数据结构与算法执行过程时非常有用。
2 安装 Java 与 Git
接下来需要安装以下开发工具:
- Java Development Kit (JDK)
- Git
对于 JDK,安装 任意较新的稳定版本即可(例如 JDK 17 或更高版本),不过多描述
3 获取课程代码并初始化仓库
CS61B 的大多数作业都基于官方提供的代码仓库
首先创建一个文件夹,命名为skeleton-sp21,在该文件夹中打开终端执行
1 | git init |
用于初始化git仓库
接着,添加课程仓库为远程仓库,并把skeleton代码拉取到本地:
1 | git remote add skeleton https://github.com/Berkeley-CS61B/skeleton-sp21 |
skeleton-sp21 仓库中并不包含全部依赖文件,因为按照上面的clone方式,其中的Java库文件被作为 Git Submodule(子模块)管理。
(该部分为Lab2的Getting Java Libraries)
因此需要执行:
1 | git submodule update --init |
该命令会自动下载 library-sp21 子模块,并在library-sp21目录中生成一个文件夹:
1 | library-sp21/javalib |
如果子模块下载失败,也可以手动克隆git clone https://github.com/Berkeley-CS61B/library-sp21.git
这时无论用哪种方式,library-sp21文件夹下都会额外多出来一个.git文件夹,可以把它删掉。由于library-sp21目录本来是作为子模块的,所以你后续commit和push的时候git会自动忽略这个文件夹,如果不想让它被忽略,把skeleton-21目录下的.gitmodules文件删掉,并在.gitignore文件中!library-sp21这行的下面新增内容为:!library-sp21/**的一行即可。
4 配置 Git 远程仓库
建议为课程代码创建一个 私有Github仓库,用于进行版本管理和备份,本文跳过具体步骤。
在完成 GitHub 账户配置(以及配置好token 或 SSH key)后,在 skeleton-sp21 目录中执行:
1 | git remote add origin https://github.com/你的仓库地址.git |
这样即可将课程代码推送到自己的 GitHub 仓库。
5. IntelliJ IDEA 项目配置
完成上述步骤后,课程目录结构应该和下面一样:
1 | skeleton-sp21/ |
CS61B Spring 2021 使用 Maven (pom.xml) 管理项目依赖,因此需要按照 Lab2 的说明完成一次性配置。
对于这步,请参考官方文档的One-Time Setup部分:
https://sp21.datastructur.es/materials/lab/lab2setup/lab2setup
必须按照文档配置,否则可能会出现看不懂的报错。
由于课程文档基于较旧版本的 IntelliJ IDEA 编写,其中部分界面选项在新版 IDE 中已经发生变化,没有的选项跳过就行。
由于官网是英文版本的不太方便阅读,所以中文版本设置完以后应该差不多长这个样子:
最后点击 应用 和 确认 即可保存设置。
虽然我不明白为什么lab1和proj0没有通过这种方式导入库,所以完成proj0的时候你需要按照文档上的步骤手动导入库
6. 后续完成作业的流程
我强烈建议在IDEA中分别以独立项目的形式打开对应的作业目录,例如 lab3 、proj2,而不是直接打开整个 skeleton-sp21根目录。
每当完成作业,可以将其提交至Gradescope进行评分。请前往 Gradescope注册一个帐号,学校选择“UC Berkeley“,并输入课程代码 MB7ZPY 以添加课程。
7. 报错处理
如果出现 “无法编译为 JVM 目标 6 配置的模块 ‘lab3’: 当前与该模块关联的 JDK Oracle OpenJDK 21.0.7 - aarch64 不支持所需 jvm 目标 6。” 报错:
- 请重新完成本文中“5. IntelliJ IDEA 项目配置”提到的内容,或重新完成Lab2的One-Time Setup部分
如果出现 “找不到插件 ‘org.apache.maven.plugins:maven-compiler-plugin:3.1’” 报错:
- 也请重新完成本文中“5. IntelliJ IDEA 项目配置”提到的内容,或重新完成Lab2的One-Time Setup部分
如果出现 ”java: 程序包org.junit不存在“ 、“java: 程序包ucb.gui2不存在” 或 “java: 程序包ucb.util不存在” 这种某些程序包找不到的情况:
- 请在IDEA的左上角进入 文件——项目结构——库 后,点击加号添加skeleton-21/library-sp21/目录下的
javalib文件夹,添加后点击应用和确认,或参考并重新完成Proj0中的IntelliJ Setup部分
参考动图:
本文使用CC BY-NC-SA 4.0协议进行许可








