我最近正在使用 SpringFrameWork 来使用 Gradle,并遇到了编译错误:
LenientConfiguration.getArtifacts(Spec) 方法已 已弃用。这计划在 Gradle 9.0 中删除。使用一个 宽松的 ArtifactView 与一个 componentFilter 代替。有关更多信息,请参阅升级指南:link。 /Project/demo/src/main/java/com/example/demo/TodoList.java:5:错误:预期为“{” 公共类 TodoList(@Id Long id, String todolist, String Owner) {}
作为解决方案,给出了网络链接here。它似乎涵盖了我的问题,但我不明白如何解决它。我尝试将给定的代码复制到我的 build.gradle 中,但这对解决错误没有帮助。我的程序只是一个小应用程序(更多的是学习而不是实现任何目标)实现基于用户的待办事项列表。
如果您需要更多详细信息(代码片段等),请告诉我 - 谢谢。
编辑:
它指出错误发生在仅代表 Todo-List 对象的以下代码部分(这是完整的 TodoList 类):
import org.springframework.data.annotation.Id;
public class TodoList(@Id Long id, String todolist, String owner) {
}
我的 build.gradle 大部分取自我所完成的教程,(可能)最重要的部分是版本等:
// build.gradle
plugins {
id 'java'
id 'org.springframework.boot' version '3.1.4'
id 'io.spring.dependency-management' version '1.1.3'
}
group = 'com.example'
version = '0.0.1-SNAPSHOT'
java {
sourceCompatibility = '17'
}
repositories {
mavenCentral()
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'org.springframework.boot:spring-boot-starter-security'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
testRuntimeOnly 'org.junit.platform:junit-platform-launcher'
implementation 'org.springframework.data:spring-data-jdbc'
implementation 'com.h2database:h2'
}
tasks.named('test') {
useJUnitPlatform()
}
这里发生了两件事:来自 Gradle 的弃用警告和来自 Java 的编译器错误。
LenientConfiguration.getArtifacts(Spec) 方法已被弃用。这计划在 Gradle 9.0 中删除。请使用带有 componentFilter 的宽松 ArtifactView。请参阅升级指南以获取更多信息:链接。
此警告来自您正在应用的 Gradle plugins,而不是您自己的构建脚本(即不是
build.gradle
文件)。解决方案是插件开发人员修复问题并发布新版本。但请注意,截至此答案,org.springframework.boot和io.spring.dependency-management的最新版本分别是3.4.0和1.1.6。而基于后者的这个问题,该问题在1.1.5版本中得到了修复。
简而言之,将您正在应用的插件升级到最新版本。如果仍然无法阻止弃用警告,请等待插件开发人员发布已修复问题的版本。
请注意,这只是一个警告,在 Gradle 9.0 发布并升级到它之前,不会导致构建失败。
/Project/demo/src/main/java/com/example/demo/TodoList.java:5:错误:“{”预期公共类 TodoList(@Id Long id,String todolist,String Owner){}
这里看起来您正在尝试编写一个记录而不是一个普通的类。所以,应该是:
import org.springframework.data.annotation.Id;
public record TodoList(@Id Long id, String todolist, String owner) {}
注意
record
而不是 class
。