gpt4 book ai didi

java - 为什么我在包中缺少最后一级目录时却可以编译它?

转载 作者:行者123 更新时间:2023-12-02 10:53:47 26 4
gpt4 key购买 nike

为什么我缺少包中的最后一级目录,却可以编译运行?

这几天在学习springboot。当我运行代码时,它会编译并可以在浏览器中访问。但是,我发现我的包路径没有写完整。

enter image description here

如您所见,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来运行这个项目,它的工作原理是:

enter image description here

然后我将 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!";
}
}

仍然可以成功编译并运行。为什么?

最佳答案

对于源代码来说,目录和包名称的对齐通常是一个好主意,但这并不是严格要求的。根据您编译代码的具体方式,工具可能会提示它、警告您并仍然编译它或只是默默地编译您的代码。

目录结构必须与包结构匹配的位置是类文件(直接在磁盘上或jar 文件中)。

如果您检查 target 目录的内容,您会注意到 .class 文件都位于“正确的”目录中,即使原始源文件不是。

关于java - 为什么我在包中缺少最后一级目录时却可以编译它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51945668/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com