Spring
源码调试问题
文章目录
- `Spring` 源码调试问题
- 一、问题描述
- 二、解决方案
一、问题描述
错误:
springframework\buildSrc\src\main\java\org\springframework\build\CheckstyleConventions.java:68
: 错误: 找不到符号
List<String> buildFolders = List.of("bin", "build", "out");
^
符号:方法of(java.lang.String,java.lang.String,java.lang.String)
位置:接口
java.util.List
源码错误文件如下
/** Copyright 2002-2024 the original author or authors.** Licensed under the Apache License, Version 2.0 (the "License");* you may not use this file except in compliance with the License.* You may obtain a copy of the License at** https://www.apache.org/licenses/LICENSE-2.0** Unless required by applicable law or agreed to in writing, software* distributed under the License is distributed on an "AS IS" BASIS,* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.* See the License for the specific language governing permissions and* limitations under the License.*/package org.springframework.build;import java.io.File;
import java.nio.file.Path;
import java.util.List;import io.spring.javaformat.gradle.SpringJavaFormatPlugin;
import io.spring.nohttp.gradle.NoHttpExtension;
import io.spring.nohttp.gradle.NoHttpPlugin;
import org.gradle.api.Plugin;
import org.gradle.api.Project;
import org.gradle.api.artifacts.DependencySet;
import org.gradle.api.plugins.JavaBasePlugin;
import org.gradle.api.plugins.quality.Checkstyle;
import org.gradle.api.plugins.quality.CheckstyleExtension;
import org.gradle.api.plugins.quality.CheckstylePlugin;/*** {@link Plugin} that applies conventions for checkstyle.** @author Brian Clozel*/
public class CheckstyleConventions {/*** Applies the Spring Java Format and Checkstyle plugins with the project conventions.* @param project the current project*/public void apply(Project project) {project.getPlugins().withType(JavaBasePlugin.class, (java) -> {if (project.getRootProject() == project) {configureNoHttpPlugin(project);}project.getPlugins().apply(CheckstylePlugin.class);project.getTasks().withType(Checkstyle.class).forEach(checkstyle -> checkstyle.getMaxHeapSize().set("1g"));CheckstyleExtension checkstyle = project.getExtensions().getByType(CheckstyleExtension.class);checkstyle.setToolVersion("10.14.2");checkstyle.getConfigDirectory().set(project.getRootProject().file("src/checkstyle"));String version = SpringJavaFormatPlugin.class.getPackage().getImplementationVersion();DependencySet checkstyleDependencies = project.getConfigurations().getByName("checkstyle").getDependencies();checkstyleDependencies.add(project.getDependencies().create("io.spring.javaformat:spring-javaformat-checkstyle:" + version));});}private static void configureNoHttpPlugin(Project project) {project.getPlugins().apply(NoHttpPlugin.class);NoHttpExtension noHttp = project.getExtensions().getByType(NoHttpExtension.class);noHttp.setAllowlistFile(project.file("src/nohttp/allowlist.lines"));noHttp.getSource().exclude("**/test-output/**", "**/.settings/**","**/.classpath", "**/.project", "**/.gradle/**");List<String> buildFolders = List.of("bin", "build", "out"); // 错误位置project.allprojects(subproject -> {Path rootPath = project.getRootDir().toPath();Path projectPath = rootPath.relativize(subproject.getProjectDir().toPath());for (String buildFolder : buildFolders) {Path innerBuildDir = projectPath.resolve(buildFolder);noHttp.getSource().exclude(innerBuildDir + File.separator + "**");}});}}
二、解决方案
Gradle JVM
版本过低,需要在Java 8
版本以上,建议Java 17
,因为官方Spring
版本用的就是Java 17
将 Settings
里面的 gradle JVM
配置设置为 Java 17
即可