使用idea完成实验会遇到一些配置问题,在这里记录和总结一下。
首先要了解IDEA和Eclipse两个IDE之间的一些区别。
先来看看lab1。要求的lab1结构如下。
.Lab1 ├── src │ ├── P1 │ │ ├── MagicSquare.java │ │ └── txt │ │ ├── 1.txt │ │ ├── 2.txt │ │ ├── 3.txt │ │ ├── 4.txt │ │ └── 5.txt │ ├── P2 │ │ ├── .gitignore │ │ ├── rules │ │ │ ├── RulesOf6005.java │ │ │ └── RulesOf6005Test.java │ │ └── turtle │ │ ├── Action.java │ │ ├── DrawableTurtle.java │ │ ├── LineSegment.java │ │ ├── PenColor.java │ │ ├── Point.java │ │ ├── Turtle.java │ │ ├── TurtleGUI.java │ │ ├── TurtleSoup.java │ │ └── TurtleSoupTest.java │ └── P3 │ ├── FriendshipGraph.java │ └── Person.java └── test └── P3 └── FriendshipGraphTest.java
这里,如果clone下github上给的几个文件,会有一个问题。就是在包P1下还会有一层src。而P1是包,没有src,无法在P1下建立java文件。
更为迷惑的是,点开RulesOf6005Test.java,发现爆红,提示的解决方案是讲rules改为P2.rules。但是,思考一下文件的结构,P1,P2,P3都是应该是能够独立运行的java程序,那么这里编译器提示的改动就不合理了。rules 应该是以 P2 作为顶层目录下的一个 package。
那么如何更改?
通过之前对两个编译器的比较,可以知道这里的P1,P2,P3应该设置为模块Module。在Project setting中new一个模块,并且选中要改为模块的P1,P2,P3就行。
根据实验要求,我们 MagicSquare.java 应处于 P1 的根目录而不是 P1 的 src 子目录下。解决方法是:选择 src ,然后将上方的 Sources 按钮取消选中,删除 P1 下的 src 文件夹,最后选择 P1 根目录本身,选中 Sources 将其作为 P1 模块的 Sources Root 。
以下是效果图。
P2是类似的。而Test还要注意两点。
1.因为Test是测试P3的,所以要设置其为Test resources Root。
2.设置依赖项,要把其dependency加入P3。
最终效果如下:
Lab2也是类似,只是要注意一点,在Poem Walk问题中,实现test时,明明输入的文件路径正确,但是就是提示找不到文件路径。
这个问题困扰了很久,其实也是和上面的配置有关。由于P1Test设置成了模块,依赖于P1。但是Junit运行路径和用main运行不一样,与实际文件路径不同。测试默认的运行方式是模块依赖。将运行方式从模块依赖改为项目依赖,就能找到文件路径并正常运行了。