Spring Boot构建时提示“cannot find symbol: @RestController”及“@RequestMapping”错误的解决求助
Spring Boot构建时提示“cannot find symbol: @RestController”及“@RequestMapping”错误的解决求助
我正在尝试用Spring Boot部署一个极简的API示例,按照官方文档的建议用Gradle来自动化构建任务。
我的核心代码如下:
package webserver.blog; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @RestController @SpringBootApplication public class BlogApplication { @RequestMapping("/") String home() { return "Hello, World!"; } public static void main(String[] args) { SpringApplication.run(BlogApplication.class, args); } }
不过构建时Java抛出了错误——我提到Gradle只是为了完整说明情况,从错误信息来看应该不是自动化构建工具的问题:
org.gradle.api.internal.tasks.compile.CompilationFailedException: Compilation failed; see the compiler output below. /home/flak-zoso/IdeaProjects/ics0014/SpringBlog/blog/src/main/java/webserver/blog/BlogApplication.java:7: error: cannot find symbol @RestController ^ symbol: class RestController /home/flak-zoso/IdeaProjects/ics0014/SpringBlog/blog/src/main/java/webserver/blog/BlogApplication.java:11: error: cannot find symbol @RequestMapping("/") ^ symbol: class RequestMapping location: class BlogApplication 2 errors at org.gradle.api.internal.tasks.compile.JdkJavaCompiler.execute(JdkJavaCompiler.java:84)
我的build.gradle文件内容如下:
plugins { id 'java' id 'application' id 'org.springframework.boot' version '3.4.2' id 'io.spring.dependency-management' version '1.1.7' } group = 'webserver' version = '0.0.1-SNAPSHOT' java { toolchain { languageVersion = JavaLanguageVersion.of(17) } } repositories { mavenCentral() } application { mainClass.set('main.java.webserver.BlogApplication') } sourceSets.main.java.srcDirs = ['blog/src'] dependencies { implementation 'org.springframework.boot:spring-boot-starter' implementation 'org.springframework.boot:spring-boot-starter-web' implementation 'org.springframework:spring-web' implementation 'org.liquibase:liquibase-core' implementation 'org.junit.jupiter:junit-jupiter-api:5.5.1' testImplementation 'org.springframework.boot.test.context:spring-boot-starter-test' testImplementation 'org.springframework.boot:spring-boot-starter-test' testRuntimeOnly 'org.junit.platform:junit-platform-launcher' } tasks.named('test') { useJUnitPlatform() }
看起来我缺少@RequestMapping和@RestController对应的类,但我已经按照网上的示例和官方文档添加了相关依赖和导入。
抱着试试看的心态,我还尝试添加了更宽泛的导入语句,但错误依然存在:
import org.springframework.boot.*;
另外,根据评论区@Syed的建议,我修改了构建配置,但也没有解决问题:
application { mainClass.set('webserver.blog.BlogApplication') } sourceSets.main.java.srcDirs = ['blog/src/main/java']
请问我到底缺少了哪个包、依赖或者导入语句?感谢各位的帮助!
备注:内容来源于stack exchange,提问作者FLAK-ZOSO
相关产品推荐
相关产品推荐

