记录下来遇到的(问题,解决方法),是更有效的解决问题的方式。(原谅我领悟的太晚与懒,今后用更有意义的方法,作一个更有意义的人)java
由于遇到了屡次,参考同一个方法,原文链接:https://blog.csdn.net/u010512607/article/details/46350813web
近两天在用Eclipse写代码的时候突发奇想,把全部生成的 .class 文件通通删掉,觉得只要从新运行就能够从新生成新的 class 文件,哪知道出问题了,控制台提示->错误:找不到或没法加载主类……。本身忙活了很久,也没有有效的解决方法。后来在网上找了找,终于发现了真正的缘由。spa
原来,Eclipse 中的 Java 编译器是基于 .java 文件的新旧来判断是否进行编译。也就是说,一个 .java 文件若是不更新,那么 Eclipse 中的编译器就不会对其进行再次编译。.net
前面提到的删掉了全部的 .class 文件后点击运行报错主要也是这个缘由。删除 .class 文件后,在 .java 文件没有变化的时候是不会被从新编译的,那么 JVM 在运行 .class 文件时就找不到 .class 文件,因而就报错。那么,该怎么解决呢?orm
咱们知道,Eclipse 默认状况下第一次点击运行图标或者右键->Run As 一个源文件时,会提示以下:blog
也就是让咱们选择是否在运行前自动保存源文件,这样在对源文件进行修改事后就能够当即反映到运行结果中。若是勾上Always save resources before launching,那么每次运行都会判断文件是否已经更新并进行保存,若是要对其进行设置,能够在 Window->Preferences->Run/Debug->Launching 中进行设置:ip
而在 Eclipse 中还有一点得注意,若是勾选了在运行前保存源文件,那么,源文件也会被编译,由于在默认的 Windows->Preferences->General->Workspace 中,有这样一条:ci
只要源文件一有变化(保存后)就会自动进行编译操做,缺点是必须得作点什么而后保存,因此若是源文件中没有使用到其它 .java 文件中自定义的类的时候,能够对其进行象征性的修改以使其变成新的,而后运行就好了。不然还得把用到的类也进行一样的操做而后保存运行。编译器
注意,还有可是,这样作太麻烦了,并且对于一包含大量源文件的工程来讲,这么作也不太现实。因此得找一个一劳永逸的解决之道。答案就是:it
Project->Clean...
Clean...操做会将该工程之前的全部编译信息清空,而后默认将所在工程的全部 .java 文件都进行一次编译,这样的话就能够方便地进行修改与运行了。
写了这么多,总结一下关于删掉 .class 文件运行报错的几种解决办法:
一、对于单个文件,而且没有使用到在别的 .java 文件中自定义的类,能够对其进行象征性的修改,加空格或者相似的操做,而后保存。若是使用了其它类,那么就得在对应的类中也做修改并保存,或者修改完后一齐保存。
二、简单粗暴又有效的办法,Project->Clean...,将所在工程以往的编译信息都清空并全都从新编译一次。