Java 日食不';运行时不能生成新的类文件

Java 日食不';运行时不能生成新的类文件,java,eclipse,file,class,Java,Eclipse,File,Class,我无意中删除了我的类文件(实际上,在试图配置git存储库时,bin文件夹的全部内容) 现在,当我在Eclipse上运行我的程序时,我得到一个错误: Error: Could not find or load main class BmrMain", and no .class files are generated in the bin folder. 我可以轻松地重建项目,但是启用了“自动构建”,所以我的问题是,为什么在运行应用程序时Eclipse不重建类文件?为什么我必须清理然后重新生成要

我无意中删除了我的类文件(实际上,在试图配置git存储库时,bin文件夹的全部内容)

现在,当我在Eclipse上运行我的程序时,我得到一个错误:

Error: Could not find or load main class BmrMain", and no .class files are generated in the bin folder.
我可以轻松地重建项目,但是启用了“自动构建”,所以我的问题是,为什么在运行应用程序时Eclipse不重建类文件?为什么我必须清理然后重新生成要重新创建的类文件

另外,当将.src文件移动到单独的文件夹进行测试时,我使用命令提示符进行编译。它工作正常,但在编译(
javac BmrMain.java
)时,出现了以下错误:

Note: BmrMain.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
尽管在键入
javabmrmain
时程序运行正常。这些错误意味着什么?我在Eclipse中确实有一些警告,但它们对我来说并不是什么大问题,因此,我留下了它们:


当您在Eclipse中进行更改时,Eclipse将自动生成。它并没有主动地监视文件系统,以查看您何时删除文件,它是从文件系统下生成的。如果您在Eclipse之外乱动了项目目录,您应该总是刷新项目,并且可能需要告诉Eclipse手动构建。否则,Eclipse将假定项目处于良好状态(因为这就是它离开项目的地方)

警告
javac
outputs告诉您在您的类中存在不好的实践(具体来说,是未经检查的强制转换)。如果将
-Xlint:unchecked
添加到
javac
调用中,它将准确地输出有问题的行

输出将类似于您在Eclipse中已经看到的警告,它们是非常重要的。您正在使用,这是一个非常糟糕的实践,导致错误,难以使用代码。您应该避免从“Eclipse外部”(例如通过命令行)删除Eclipse生成的文件。Eclipse不会自动注意到这些更改

但是Eclipse会自动注意到对项目源文件的更改,然后自动重新构建必要的类文件


还可以查看Eclipse首选项(菜单项“Eclipse>preferences”)。在“常规>工作区”窗格中,您将找到与(自动)刷新相关的三个复选框:“自动生成”、“使用本机挂钩或轮询刷新”、“访问时刷新”。所有这些复选框都应该被选中。

在我的例子中,java builder丢失了。这可能是由于ubuntu中的eclipse无法导入git项目而导致的一个非常特殊的问题,但无论如何,解决方案是编辑.project文件,该文件应该位于项目的根文件夹中,它应该如下所示:

<buildSpec>
<buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.jdt.core.javanature</nature>
</natures>

org.eclipse.jdt.core.javabuilder
org.eclipse.jdt.core.javanature

所以对我来说,添加buildCommand行解决了这个问题。

对于第二个问题,您是否尝试过运行
javac-Xlint:unchecked
?这正是那个信息告诉你要做的。@dimo414不,我没有。到底有什么区别?为什么要求我这么做?忽略前面的评论,谢谢你的详细解释。我已经修复了组合框错误。现在我对序列化错误感到困惑。当我试图解决这个问题时,它会询问我是想要一个默认的串行版本ID,还是一个生成的ID。我知道序列化是什么,但我不知道应该如何生成id。当你说“刷新项目”时,你是说清理并重建吗?如果右键单击项目,则有一个“刷新”选项。这将扫描文件系统,并尝试构建任何更改。谢谢。不幸的是,bin文件夹仍然是空的。序列化错误没有那么严重(它只在您使用Java序列化时才起作用,通常您不需要或不想这样做)。您可以在Eclipse中禁用该警告,或者让Eclipse为您设置一个版本ID。网站上有很多关于这一警告的报道。试着成为关键词。停止手动删除您的bin目录。如果刷新不足,请清除并重新生成。这些选项都已选中。那么,如果他们弄乱了.class文件,该怎么办呢?清理和重建是修复代码的唯一可行选项吗?