MAC IDEA配置踩坑记

作者

背景

本科时一直使用着Eclipse写Java程序,最近想把Java开发环境转移到IDEA。原因如下:

  • 前段时间适用了一下IDEA,深色背景更让人沉浸;
  • 智能提示比Eclipse强得多,Eclipse最近往往自动补充上非期望的代码;
  • 周围同学也用着它;
  • 虽然也有不少人主张白板写代码,但是有高效的工具更利于我们编写,天下武功唯快不破,我们应该拥抱能提高我们工作效率的工具。
    目前初步配置完成,期间遇到一些问题,此文以作记录。

Project、Module、Package的联系

在 IntelliJ IDEA 中,没有类似于 Eclipse 工作空间(Workspace)的概念,而是提出了Project和Module这两个概念。

Project与Module示意图
如上图所示,Data Structures and Algorithms 是一个Project,它下面的Algorithm4、Leetcode、Test均为Module。

对于 Project,IntelliJ IDEA 官方是这样介绍的:

A project is a top-level organizational unit for your development work in IntelliJ IDEA. In its finished form, a project may represent a complete software solution. A project is a collection of:

  • Your work results: source code, build scripts, configuration files, documentation, artifacts, etc.
    SDKs and libraries that you use to develop, compile, run and test your code.
  • Project settings that represent your working preferences in the context of a project.
  • A project has one or more modules as its parts.

对于 Module,IntelliJ IDEA 官方是这样介绍的:

  • A module is a part of a project that you can compile, run, test and debug independently.
  • Modules are a way to reduce complexity of large projects while maintaining a common (project) configuration.
  • Modules are reusable: if necessary, a module can be included in more than one project.

总而言之

  1. IntelliJ系中的Project相当于Eclipse系中的workspace
  2. IntelliJ系中的Module相当于Eclipse系中的Project
  3. IntelliJ中一个Project可以包括多个Module
  4. Eclipse中一个Workspace可以包括多个Project

workspace里边的project之间是没有关系的独立的,而idea中的project和Module是一种父子的关系,Module之间是一种兄弟关系,或者是一种依赖关系。
好像最开始建立Project产生的src与Module里的src属于同级别。

至于package,在Java中package是一个为了方便管理组织java文件的目录结构,并防止不同java文件之间发生命名冲突而存在的一个java特性。
在eclipse中可以对单独一个包编译运行查看结果。而IDEA似乎是以Module为单位的,默认要把一个Module里的所有包的错误解决好才能运行。若只想运行一个包里的,需要Edit Configurations改好主类+Build,no error checks。

关于存放

这个Project我主要存放数据结构与算法的东西,所以Project名取为DSA。
把不同书本、网站的作为一个个Module。
以Leetcode Module为例,因为每题都是Solution.java,为了防止重名,前期我为每题都建立了包。现在我认为可以按Tag为每题分package,每题可以命名为题号.java而不是Solution; 每个包就含一个main.java。

关于自建库的导入

Alg4书本同时提供了算法库和测试数据,可以把它们加进Module Algorithms4。
algs4.jar是放在Library/Java/Extensions里。(我居然找Library找了那么久。)
具体可以参考如何在Intellij Idea下编译运行《算法》里的程序?

快捷的操作

一些快捷操作

Live Templates的sout、fori最常用,也可以自己添加。