解决Eclipse中“诡异”的错误:找不到或无法加载主类……
近两天在用Eclipse写代码的时候突发奇想,把所有生成的 .class 文件统统删掉,以为只要重新运行就可以重新生成新的 class 文件,哪知道出问题了,控制台提示->错误:找不到或无法加载主类……。自己忙活了好久,也没有有效的解决方法。后来在网上找了找,终于发现了真正的原因。
原来,Eclipse 中的 Java 编译器是基于 .java 文件的新旧来判断是否进行编译。也就是说,一个 .java 文件如果不更新,那么 Eclipse 中的编译器就不会对其进行再次编译。
前面提到的删掉了所有的 .class 文件后点击运行报错主要也是这个原因。删除 .class 文件后,在 .java 文件没有变化的时候是不会被重新编译的,那么 JVM 在运行 .class 文件时就找不到 .class 文件,于是就报错。那么,该怎么解决呢?
我们知道,Eclipse 默认情况下第一次点击运行图标或者右键->Run As 一个源文件时,会提示如下:
也就是让我们选择是否在运行前自动保存源文件,这样在对源文件进行修改过后就可以立即反映到运行结果中。如果勾上Always save resources before launching,那么每次运行都会判断文件是否已经更新并进行保存,如果要对其进行设置,可以在 Window->Preferences->Run/Debug->Launching 中进行设置:
而在 Eclipse 中还有一点得注意,如果勾选了在运行前保存源文件,那么,源文件也会被编译,因为在默认的 Windows->Preferences->General->Workspace 中,有这样一条:
只要源文件一有变化(保存后)就会自动进行编译操作,缺点是必须得做点什么然后保存,所以如果源文件中没有使用到其它 .java 文件中自定义的类的时候,可以对其进行象征性的修改以使其变成新的,然后运行就行了。否则还得把用到的类也进行同样的操作然后保存运行。
注意,还有但是,这样做太麻烦了,而且对于一包含大量源文件的工程来说,这么做也不太现实。所以得找一个一劳永逸的解决之道。答案就是:
Project->Clean...
Clean...操作会将该工程以前的所有编译信息清空,然后默认将所在工程的所有 .java 文件都进行一次编译,这样的话就可以方便地进行修改与运行了。
写了这么多,总结一下关于删掉 .class 文件运行报错的几种解决办法:
1、对于单个文件,并且没有使用到在别的 .java 文件中自定义的类,可以对其进行象征性的修改,加空格或者类似的操作,然后保存。如果使用了其它类,那么就得在对应的类中也作修改并保存,或者修改完后一齐保存。
2、简单粗暴又有效的办法,Project->Clean...,将所在工程以往的编译信息都清空并全都重新编译一次。
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 全网最简单!3分钟用满血DeepSeek R1开发一款AI智能客服,零代码轻松接入微信、公众号、小程
· .NET 10 首个预览版发布,跨平台开发与性能全面提升
· 《HelloGitHub》第 107 期
· 全程使用 AI 从 0 到 1 写了个小工具
· 从文本到图像:SSE 如何助力 AI 内容实时呈现?(Typescript篇)
2019-10-27 现在, Delphi 的多线程已经非常易用了!
2019-10-27 Delphi中进行延时的4种方法
2019-10-27 Delphi 线程Timer (TThreadTimer)
2019-10-27 定时显示提示信息(TToolTip)
2019-10-27 delphi中我用定时器每隔一段时间执行操作