Spring 源码调试问题 ( List.of(“bin“, “build“, “out“); )

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

源码错误文件如下

java 复制代码
/*
 * 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 即可

相关推荐
微尘寒风3 小时前
【Git】的安装和使用
java·git
y = xⁿ3 小时前
DeepSeek Harness 学习日记:关于Agent接口,工具调用的底层实现
android·java·学习
侧耳倾听1114 小时前
jwt使用简介
java·jwt
顶点多余5 小时前
那些在算法中适合巩固的知识点---1
java·前端·算法
AI人工智能+电脑小能手5 小时前
大白话说Java设计模式-46-责任链模式(业务实战篇)
java·设计模式·责任链模式·风控校验·servlet filter·spring interceptor·链式处理
jay神5 小时前
【计算机毕业设计】基于SpringBoot的程序教学辅助系统
java·前端·vue.js·spring boot·后端·毕业设计·课程设计
2601_962066496 小时前
【Sql Server】Update中的From语句,以及常见更新操作方式
android·java·数据库
yaoxin5211237 小时前
507. Java 反射 - 在 BeanFactory 中实现依赖注入
java·开发语言
OPEN-F7 小时前
C++模板教程:变参模板、折叠表达式与SFINAE
java·开发语言·c++
2601_962072218 小时前
SpringMVC进阶(自定义拦截器以及异常处理)
java