如何防止IntelliJ删除导入语句

3
我正在学习斯坦福大学算法课程(通过Coursera)。该课程使用IntelliJ作为编程环境,并使用一些专门为该课程构建的库。特别地,它使用了一些StdOut和StdIn库来处理标准输出和输入。
如果我只是编写代码并尝试通过终端进行编译,它会抛出错误:
error: cannot find symbol; symbol: variable StdOut.
我发现这个问题可以通过添加导入语句来解决:
import edu.princeton.cs.algs4.StdIn;
import edu.princeton.cs.algs4.StdOut;

然而,一旦我添加这些语句,IntelliJ就会将它们删除。但是,如果我再次编译,它会编译通过,所以看起来IntelliJ正在导入这些库,然后删除这些语句。
问题是,如果我关闭并重新打开项目,再次编译,它会再次出现缺失符号错误,这迫使我重新编写导入语句。
我的问题是,我不喜欢每次关闭和打开项目时都重新编写这些语句的想法,我只想让IntelliJ停止干扰我的代码,并让这些语句保留在那里。由于我只是一个初学者,我想专注于学习算法,而不是与IntelliJ功能作斗争,因此我完全可以禁用任何类型的自动导入,我将手动处理所有导入。
我进入设置/编辑器/常规/自动导入,基本上禁用了一切,但是IntelliJ仍然会删除我的导入语句。
感谢您的帮助!

请提供一个示例项目以进行检查。原因可能是当您从IDE构建它时(不需要导入语句时),使用了不同的环境上下文和终端。 - Andrey
谢谢,我解决了。为了这门课程的目的,我应该下载其中一个基础项目,这些项目是为了与课程库一起使用而构建的,然后只需添加新类来编写练习代码。我已经做到了,一切都很顺利。我之前在尝试从头开始创建一个新项目。也许有一种方法可以从头开始创建项目并使其与课程库一起工作,但我暂时不会担心这个问题。 - Miguel GC
1个回答

6
它实际上并没有删除您的导入语句,只是折叠它们。换句话说,它只是不显示导入语句所在的行,主要是为了可读性。 您可以通过以下方式禁用此行为: 禁用以下内容:
Settings -> Editor -> General -> Code Folding -> Imports

然而,如果IntelliJ真的删除了这些行,请禁用以下内容:

Settings -> Editor -> General -> Auto Import -> Optimize imports on the fly

谢谢!我一开始也是这么想的。但实际上它并不是折叠,而是删除了它们。我检查了设置,代码折叠已禁用。如果它们只是被折叠起来,我不认为我需要在重新打开项目时再次插入这些行。 - Miguel GC
谢谢,我已经这样做了,但程序仍然删除它们。我已经关闭并重新启动了程序。情况比我想象的更糟,每次编译都必须添加这些行。如果我添加这些行,它们会被删除,但编译仍然成功完成。但是,如果我再次编译,就会再次出现错误,所以我不得不再次添加这些行。如果我无法解决这个问题,我可能需要从头重新安装IntelliJ。 - Miguel GC
确实非常奇怪。如果重新安装也不起作用,请通知我们。 - DWuest
重新安装后问题仍然存在。程序可以从tools/recompile成功编译,即使没有添加导入语句。但是当我使用终端时编译失败,这正是我想要做的。即使使用终端,在添加导入语句后编译也可以工作,但由于这些行立即被删除,所以每次编译都必须重新添加它们。我猜测这是课程预打包编程环境中的一个错误。但感谢您的帮助! - Miguel GC
你尝试过导入一个未使用的包吗?这不应该会删除它。这是否意味着你没有从官方网站下载IntelliJ?如果你没有,请尝试从他们的官方网站安装。如果你正在考虑切换编辑器,我推荐Atom或Sublime Text。 - DWuest

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接