为什么我可以编译和运行它,当我错过了包中的最后一级目录?
最近几天我正在学习springboot。当我运行我的代码时,它会编译,并且可以在浏览器中访问。但是,我发现我的包路径并没有完全写入。

如您所见,package必须是com.test.forfree.controller,但在我的代码中,它是com.test.forfree
package com.test.forfree;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class HelloController {
@RequestMapping("/")
public String index() {
return "Hello Boot 2.10!";
}
}我使用mvn spring-boot:run来运行这个项目,它的工作原理是:

然后将package语句更改为com.test.forfree.controller
package com.test.forfree.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class HelloController {
@RequestMapping("/")
public String index() {
return "Hello Boot 2.10!";
}
}它仍然可以成功编译并运行。为什么?
发布于 2018-08-21 18:27:56
对于源代码来说,目录和包名的对齐通常是一个好主意,但这并不是必须的。根据你编译代码的准确程度,工具可能会抱怨它,警告你,然后仍然编译它,或者只是静默地编译你的代码。
目录结构必须与包结构匹配的位置用于存放类文件(直接在磁盘上或在jar文件中)。
如果检查target目录的内容,您会注意到.class文件都在“正确”的目录中,即使原始的源文件不在。
https://stackoverflow.com/questions/51945668
复制相似问题