Eclipse格式化程序对我来说很疯狂

时间:2011-12-10 06:23:29

标签: eclipse

我最近面临一个非常愚蠢的问题。我正在研究一个项目,我正在编辑一个特定的文件。一开始我的eclipse格式化程序正在运行。但现在它不起作用。如果我从同一个项目中打开一些其他文件,它可以在那里工作,但是对于这个特定的文件,它不起作用。是否有任何按键使得eclipse关闭?如何为我的文件获取格式化程序?请帮忙。这个问题让我抓狂......

我正在研究Java文件。所有其他事情都在发挥作用,如警告,错误。它只是我在文件中编辑我的代码,最初我的格式化程序正在工作。然后我进行了更多更改并按 Ctrl + Shift + F ,它完成了工作。从那以后它对我来说不起作用了。它在同一项目的其他文件上工作正常。如果我复制我的代码并粘贴到同一项目的其他文件中并执行 Ctrl + Shift + F 它也不起作用,所以我猜这可能是我不小心按下了一些快捷方式来关闭该代码上的eclipse。我该如何恢复?

2 个答案:

答案 0 :(得分:3)

正如你所说的,以下情况并非如此:

  • 对整个文件或部分进行格式化,没有捷径可以阻止它。
  • 快捷方式已就位且正在运行。如果您不确定,请按两次CTRL-SHIFT-L以获取键盘快捷键的首选项,并在那里搜索格式。

所以原因应该是代码本身。格式化程序必须做的是:

  • 部分解析代码,以便推导出AST(抽象语法树)。
  • 使用AST重新格式化代码。

如果格式化程序没有机会获得AST,它只会中止。做一个简短的实验,看看是否是原因:

  1. 取出文件顶部,不会出现任何错误或警告。将文件的其余部分移动到另一个编辑器(可能在eclipse之外)。
  2. 查看格式化程序现在是否正常工作。
  3. 如果是,请从tmp编辑器中再取一个方法并将其移至打开的文件,然后重复步骤2.
  4. 格式化程序不再工作时停止。原因应该是您刚刚添加的代码。查看错误和警告,并尝试修复它们。
  5. 我想不出任何其他原因,所以我想尝试那个答案。希望它有所帮助: - )

答案 1 :(得分:0)

它不能是一种快捷方式,因为您在另一个文件中复制了相同内容的同一问题。寻找错位的大括号{或/ **

此外,静态分析器findbugs可能能够查明这个问题。您可以先使用Java applet来查看它是否会捕获它,但我建议您安装它的Eclipse插件,以便始终可以使用findbugs。

它位于:http://findbugs.sourceforge.net/demo.html

只需点击第一段中的链接:运行findbugs 那将下载一个findbugs.jnlp文件,然后你只需要双击该文件来运行applet(因为你显然已经在你的计算机上安装了Java)。