解决Eclipse中“诡异”的错误:找不到或无法加载主类

摘要:
也就是说,如果没有更新java文件,Eclipse中的编译器将不会重新编译它。我们知道,默认情况下,Eclipse第一次单击Run图标或右键单击RunAs作为源文件时,会提示如下:图1允许我们选择是否在运行前自动保存源文件,这样对源文件的更改就可以立即反映在运行结果中。

找了很多文章,这个帮助我解决了现在的问题。

原文连接:https://blog.csdn.net/u010512607/article/details/46350813

近两天在用Eclipse写代码的时候突发奇想,把所有生成的 .class 文件统统删掉,以为只要重新运行就可以重新生成新的 class 文件,哪知道出问题了,控制台提示->错误:找不到或无法加载主类……。自己忙活了好久,也没有有效的解决方法。后来在网上找了找,终于发现了真正的原因。

原来,Eclipse 中的 Java 编译器是基于 .java 文件的新旧来判断是否进行编译。也就是说,一个 .java 文件如果不更新,那么 Eclipse 中的编译器就不会对其进行再次编译。

前面提到的删掉了所有的 .class 文件后点击运行报错主要也是这个原因。删除 .class 文件后,在 .java 文件没有变化的时候是不会被重新编译的,那么 JVM 在运行 .class 文件时就找不到 .class 文件,于是就报错。那么,该怎么解决呢?

我们知道,Eclipse 默认情况下第一次点击运行图标或者右键->Run As 一个源文件时,会提示如下:

解决Eclipse中“诡异”的错误:找不到或无法加载主类第1张 图1

也就是让我们选择是否在运行前自动保存源文件,这样在对源文件进行修改过后就可以立即反映到运行结果中。如果勾上Always save resources before launching,那么每次运行都会判断文件是否已经更新并进行保存,如果要对其进行设置,可以在 Window->Preferences->Run/Debug->Launching 中进行设置:

解决Eclipse中“诡异”的错误:找不到或无法加载主类第2张 图2

而在 Eclipse 中还有一点得注意,如果勾选了在运行前保存源文件,那么,源文件也会被编译,因为在默认的 Windows->Preferences->General->Workspace 中,有这样一条:

解决Eclipse中“诡异”的错误:找不到或无法加载主类第3张 图3

只要源文件一有变化(保存后)就会自动进行编译操作,缺点是必须得做点什么然后保存,所以如果源文件中没有使用到其它 .java 文件中自定义的类的时候,可以对其进行象征性的修改以使其变成新的,然后运行就行了。否则还得把用到的类也进行同样的操作然后保存运行。

注意,还有但是,这样做太麻烦了,而且对于一包含大量源文件的工程来说,这么做也不太现实。所以得找一个一劳永逸的解决之道。答案就是:

Project->Clean...

Clean...操作会将该工程以前的所有编译信息清空,然后默认将所在工程的所有 .java 文件都进行一次编译,这样的话就可以方便地进行修改与运行了。

写了这么多,总结一下关于删掉 .class 文件运行报错的几种解决办法:

1、对于单个文件,并且没有使用到在别的 .java 文件中自定义的类,可以对其进行象征性的修改,加空格或者类似的操作,然后保存。如果使用了其它类,那么就得在对应的类中也作修改并保存,或者修改完后一齐保存。

2、简单粗暴又有效的办法,Project->Clean...,将所在工程以往的编译信息都清空并全都重新编译一次。

免责声明:文章转载自《解决Eclipse中“诡异”的错误:找不到或无法加载主类》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Springcloud之Zuul网关入门水晶报表 VS2010 应用下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

随便看看

postgresql笔记

一旦任何有价值的对象被转移到新所有者,可以使用DROPOWNED命令删除被删除角色所拥有的任何剩余对象。此外,DROPOWNED不会删除整个数据库或表空间。因此,如果角色有任何尚未转移到新所有者的数据库或表空间,则需要手动删除它们。DROPOWNED还将注意到,对于不属于目标角色的对象,删除授予目标角色的任何特权。因为REASSIGNOWNED不会接触这些对...

电脑不识别USB blaster驱动问题

电脑不识别USB blaster,如下图: 解决办法:手动更新...

Selenium操作示例——鼠标悬停显示二级菜单,再点击二级菜单或下拉列表

这两天在python中玩selenium时,我遇到了一个问题,那就是鼠标移动到页面上的一个按钮或菜单,二级菜单或下拉菜单自动弹出,然后二级菜单或者下拉列表自动点击。...

Swift开发中 JSON对象/JSON字符串/Data的互转

本文将介绍常见的转换#pragmark JSON(object)------˃JSON string 1,原生方法//JSON------˃data------˃JSON string letdata=try?JSON序列化。data#pragmark数据------˃JSON(对象)1.本机方法guardletarray=try?[[String:AnyO...

ClickHouse之访问权限控制

Ck当前只有select和insert。这是我刚才提到的:60cd41aedc4e47e8883682b416109e7b7e345e15ecc63c2c98ecdab5e8e053a只读defaultdefault此部分意味着添加具有只读权限的dba用户。允许访问的数据库是默认值。源IP不受限制::/0尝试以dba用户身份登录:clickhouse-cli...

CefSharp 浏览器核心,爬虫

CefSharp是什么Aframeworkforembeddingweb-browsing-likecapabilitiestoastandard.NETapplication(WPForWindowsForms).Asetofhigh-levelcustomcontrolstomakeitreasonablyeasytointegratethesecapa...