IntelliJ IDEA 本地调试 Leetcode 配置 踩坑总结
配置参考文章
由于自己配置的时候没有看参考踩了好多坑,回过头来看完了发现这一篇讲解得比较细,其实很多坑都可以避免的。
以下记录了我自己碰到的问题和解决办法,解决办法是我和GPT共同作者。
Java项目未识别,文件变红
当你的 Java 文件在 IntelliJ IDEA 中显示为红色并且无法将其选为 main class 时,可能是由于以下几个原因:
- 项目未正确识别为 Java 项目:你的项目可能没有被正确识别为 Java 项目。
- 模块未配置:你的模块可能没有正确配置为包含 Java 代码。
- 缺少 SDK 配置:你的项目或模块可能没有配置 SDK。
解决步骤:
1. 确保项目识别为 Java 项目
- 打开
File -> Project Structure...
。 - 在
Modules
选项卡中,确保你的模块被标记为Java
模块。- 如果没有模块,点击
+
号,选择New Module
,然后选择Java
模块。
- 如果没有模块,点击
2. 配置模块
- 确保你的模块包含
src
文件夹并且标记为Sources
。- 在
Modules
选项卡中,选择你的模块。 - 在
Sources
选项卡中,确保src
文件夹显示为蓝色。 - 如果不是蓝色,右键点击
src
文件夹并选择Mark Directory as -> Sources Root
。
- 在
3. 配置 SDK
- 打开
File -> Project Structure...
。 - 在
Project
选项卡中,确保Project SDK
已设置为合适的 JDK。- 如果没有设置,点击
New...
并选择你的 JDK 安装路径。
- 如果没有设置,点击
4. 检查包声明和文件位置
- 确保你的 Java 文件在正确的包中,且包声明正确。
例如,你的 SixCE719.java
文件应该位于 src/leetcode/editor/cn/
目录中,并且包含以下包声明:
package leetcode.editor.cn;
注意此处假如不另外设置,只要配置时显示的是Leetcode中国区那么会自动生成这个package,无需另外修改。
5. 重建项目
- 有时候重建项目可以解决一些奇怪的问题。
- 选择
Build -> Rebuild Project
。
- 选择
示例步骤
假设你的项目名为 LeetcodeProject
,包含 src
文件夹。
-
项目结构:
LeetcodeProject └── src └── leetcode └── editor └── cn └── SixCE719.java
-
配置项目结构:
- 打开
File -> Project Structure...
。 - 在
Modules
选项卡中,确保LeetcodeProject
已标记为 Java 模块,并且src
文件夹标记为Sources Root
。
- 打开
-
确保包声明正确:
- 打开
SixCE719.java
文件,确保其顶部有正确的包声明:package leetcode.editor.cn;
- 打开
-
配置 SDK:
- 打开
File -> Project Structure...
。 - 在
Project
选项卡中,确保Project SDK
设置为正确的 JDK 版本。
- 打开
-
重建项目:
- 选择
Build -> Rebuild Project
。
- 选择
生成文件名后出现空格
Leetcode-Editor的作者在Github上提供了Java配置案例,建议直接复制他的,我从CSDN上复制的有些会出现后面括号未闭合问题,有些会多出一些个空格,hu是由于Code Filename的配置最后有空格,这样会产生public类的声明与文件名不符的情况。
然后以下是我自己的配置。
// Code FIlename:
$!velocityTool.camelCaseName(${question.titleSlug})
//Code Template:
package leetcode.editor.cn;
/**
* @author [你的昵称或名字]
* $!velocityTool.date() // 生成当前你做题的时间
*/
public class $!velocityTool.camelCaseName(${question.titleSlug}) {
public static void main(String[] args) {
Solution solution = new $!velocityTool.camelCaseName(${question.titleSlug})().new Solution();
}
${question.code.trim()}
}
假如依旧出现java: 类 SixCE719 是公共的, 应在名为 SixCE719.java 的文件中声明
这样的问题,可以把code template中的public class改成非公共的,这样依然可以运行:
class $!velocityTool.camelCaseName(${question.titleSlug}) {
public static void main(String[] args) {
Solution solution = new $!velocityTool.camelCaseName(${question.titleSlug})().new Solution();
}
${question.code.trim()}
}