如何快速接手一个 Java 项目

引言

新入职一个公司或中途介入一个项目,最初的工作就是熟悉项目结构、了解项目代码。身处职场的你,是否有自己的一套完整方法呢?

工作中,我见过有的同事入职两周就将接手的项目庖丁解牛,达到对各技术细节如数家珍的地步,迭代开发新功能也是游刃有余;也碰到过一位入职三年的同事,对自己参与开发了两年多的产品还理不出头绪;我还面试过一些同行,在他们描述项目经历时,提及自己未参与的功能及对整个系统的理解时,有些人说不是自己参与的,没有了解过,也有人说项目进度紧张,没有时间去了解……

这可能跟个人工作态度、对编码的热爱程度以及工作和学习方法有关。我是一个觉悟得较晚的人,在工作的不同时间段,前面提及的种种职场表现,我竟然都经历过。不知道如何看 Java 项目的人也许不在少数,刚毕业时的我就是一个,于是想写一篇针对初入行的 Java 开发者、关于项目源码跟踪的 Chat,也就是本文了。

文将以 Eclipse 和 IDEA 两种常用 Java IDE 为基础,从 Java 项目本质入手,介绍理利用工具快速理清一个项目一些经验和方法,希望能给刚入职场的读者们一些启发。

补充一点,我不是标题党,本文标题里面的“快速”,其实是相对的,可以理解为有利的加速,将大家平时可能不太注意的内容提出来,补充一些我自己践行过的有效方法,从而让大家略有所获吧!

Java 工程导入的基础知识

Java 的基本特点是「Compile Once, Run Anywhere」,这是针对编译后的类文件的。当然,它的源码也可以从一台设备移植到另一台设备,最简单的方式就是拷贝。

初学 Java 时,大家可能用过 java 命令运行 .class 文件吧。其实 Java 开发的最小工具包就是 JDK 加文本编辑器,而 Java IDE 是二者的集成,提供了丰富的可视化界面和工具,本质上并没有脱离 JDK。

我们先回忆一下关于 Java 环境变量的几个简单问题:

  1. 为什么需要将 JDK 的 bin 目录添加到操作系统的 path 系统变量中?
  2. 为什么要配置 JAVA_HOME 环境变量?
  3. 为什么要配置 CLASSPATH 环境变量?

答案也很简单:

  1. Java 的 bin 目录下都是 JDK 命令,添加到 path 系统变量后,就可以直接使用命令,而不需要进入到 bin 目录了,它的作用是告诉操作系统命令的全路径。
  2. JAVA_HOME 是为引用 JDK 的其他应用服务的,如 Tomcat、Eclipse、IDEA 等,它们最终会通过该变量找到 JDK 的各种工具。
  3. CLASSPATH:告诉 Java 命令从哪查找类文件,如果用 java 命令执行类文件,这个变量是必须的;使用 IDE 开发时,这个系统变量可以不用添加。

为了让 Java 源文件能够一处编写、多处使用,IDE 提供了丰富的导入、导出功能,让我们摆脱纯手工编写、编译、运行 Java 程序的重复工作,这也是使用工具的好处。

如何导入工程

通过 IDE 创建的工程,可以被导入到另一个工作空间,也可以拷贝到其他机器上导入。Eclipse 常用的导入资源类型是这几种:

enter image description here

导入已经存在的工程,先选择“Existing Projects into Workspace”类型,再选择工程目录, Eclipse 列出所有识别的工程,选中某个工程后,点击 Finish 按钮完成导入。

.project 文件是 Eclipse 识别工程的依据,如果导入目录不包含 .project 文件,Projects 选项框中就不会有内容,Finish 按钮将不可用,无法导入。

导入示例:

enter image description here

Existing Maven Projects 类型,只要有 src 目录和 pom.xml 文件得工程目录就能顺利导入。从“SVN 检出项目”,将代码仓库的工程检出到本地,然后识别成 Eclipse 工程后导入。

这三种导入操作都比较简单,导入后有什么要注意的呢?

导入后的错误修正

工程导入后,由于类路径或者 JDK 环境等问题,可能会出现一些错误。Eclipse 有一个视图叫 Problems,会展示所有的错误信息,快捷键为 Alt + Shift + Q (第一步打开视图), X(选择该视图)。打开该视图,先看看工程导入后都有什么问题,可能是环境依赖问题,也可能工程源码本身有编译错误。

点击工程右键 Properties 配置项,选中 Java Build Path,就能看到 Libraries 页面上的所有依赖错误:

enter image description here

由于工程来自其他机器,所以 Libraries 中所有的 JAR 包引用路径都可能有问题,需要逐一修正。

回顾一下 Library 界面这些按钮的功能:

  • Add JARs 用来添加工作空间内的 JAR 包,仅限于该工作空间的文件目录;
  • Add External JARs 添加的是工作空间以外的 JAR 包,可定位到全部磁盘文件。

Add Library 比较丰富,它能从多个地方引入 JAR 包,主要几类标注如下:

enter image description here

细说下这三类。

“JRE System Library”,添加 JRE 系统库的,可以略过。

“Server Runtime”可为项目添加 Server 的 lib 包,其选项来源于 Server 配置:

enter image description here

Web App Libraries,则直接将其他 Web 应用的 lib 目录的 JAR 包添加到当前工程的类路径下:

enter image description here

最后是 Edit 和 Remove,它们对左侧的配置项进行编辑和删除。通过上面几类 lib 导入配置,解决掉所有的红叉后,项目导入就没有问题了。

理解导入过程

当我们导入一个工程时,Eclipse 做了哪些工作呢?我的理解是它根据项目的元数据文件(即 .project、.classpath、.settings 等),重新构建了一个项目。可能是新建,也可能是直接还原,结果就是我们本地有了一个新的工程:

  • 第一步,根据 .project 创建一个新项目。
  • 第二步,解析 .classpath 将依赖文件添加到该项目的 Libraries 路径中。
  • 第三步,拷贝资源文件到项目目录,如果 src、WebContent 等。
  • 第四步,根据 .settings 配置为工程添加组件,包括 Server (org.eclipse.wst.common.proje
收藏 收藏
分享
购买文章 ¥1.99