Java(找不到或无法加载主类的修复方法)
大家好,综合小编来为大家讲解下Java,找不到或无法加载主类的修复方法这个很多人还不知道,现在让我们一起来看看吧!
在本文中,我们将讨论找不到主类的可能原因。此外,我们将了解如何修复它们。
抽样程序
我们将从HelloWorld计划开始:
(资料图片)
public类Hello world { public static void main(String[]args){ system。出去。println(' Hello world.');}}现在让我们编译它:
$ javac的HelloWorld.java在这里,编译器将为我们的程序生成一个. class文件。这个。类文件将在同一个目录中生成。该类文件将与Java程序中给出的类名同名。
这个。类文件是可执行的。
在接下来的部分中,我们将运行它。类文件,并尝试理解“没有找到或加载主类”错误的可能原因。
错误的类名
来运行。类文件由Java编译器生成,您可以使用以下命令:
Java。类filename运行我们的程序:
$ java helloworldError: Unable to find or load the main class helloworld Yes, it failed.
The error is "the main class helloworld cannot be found or loaded", that is, the main class Hello World cannot be found or loaded.
如前所述,编译器将生成一个与程序中的Java类同名的. class文件。所以在我们的例子中,主类的名字是HelloWorld,而不是helloworld,这是区分大小写的。
让我们以正确的方式再试一次:
$ java HelloWorldHello world.这一次它运行成功。
文件扩展名
要编译Java程序,必须提供文件名及其扩展名(.java):
$ javac HelloWorld.java但是要运行.class文件,我们需要提供类名,而不是文件名。因此不需要提供.class扩展:
$ java HelloWorld.classError: Could not find or load main class HelloWorld.class同样,让我们使用正确的类名运行程序:
$ java HelloWorld Hello world.Java包名称
在Java中,我们将类似的类放在一起,称之为包。
让我们把HelloWorld类移到com.baeldung包:
package com.baeldung;public class HelloWorld { public static void main(String[] args) { System.out.println('Hello world.'); }}现在,
$ java HelloWorldError: Could not find or load main class HelloWorld但我们再次得到错误“找不到或加载主类HelloWorld”!
让我们试着理解我们错过了什么。
要运行包中的Java类,必须提供其完全限定名。所以在我们的例子中,HelloWorld的完全限定名是:com.baeldung.HelloWorld.
现在,当我们创建com.baeldung包时实际上我们创建了一个文件夹结构,如:
com/baeldung/HelloWorld.java首先,让我们尝试从com/baeldung目录运行程序:
$ java com.baeldung.HelloWorldError: Could not find or load main class com.baeldung.HelloWorld尽管如此,
我们还是无法运行我们的程序。
在这里,当我们指定完全限定类名时:com.baeldung.HelloWorld,Java试图找到HelloWorld.class类文件在com/baeldung中,在我们运行程序的目录下。
由于我们已经在com/baeldung中,Java无法找到并运行HelloWorld程序。
现在,让我们回到父文件夹并运行它:
$ java com.baeldung.HelloWorldHello world.是的,我们再次能够向世界问好。
类路径无效
在继续之前,让我们首先了解什么是类路径classpath——它是当前运行的JVM可用的一组类。
我们使用classpath变量告诉JVM在文件系统上的何处找到.class文件。
在运行程序时,我们可以使用-classpath选项提供类路径。例子:
java -classpath /my_programs/compiled_classes HelloWorld在这里,
Java将寻找HelloWorld.class类文件在/my_programs/compiled_classes文件夹中,这个文件夹的名称是我们刚刚编出来的。默认情况下,
classpath变量设置为“.”,表示当前目录。
在上面的部分中,我们更改了目录以运行程序。但是如果我们想从其他文件夹运行它呢?这时classpath变量可以帮助我们。
要从com/baeldung目录运行我们的程序,我们可以简单地说,我们的类路径是向上的两个目录—每个包部分一个:
$ java -claspath ././com.baeldung.HelloWorldHello world.这里,“…”表示父目录。在本例中,“././”表示包层次结构的顶部。
本文[高级伪原创标题]到此分享完毕,希望对大家有所帮助。
免责声明:本文由用户上传,与本网站立场无关。财经信息仅供读者参考,并不构成投资建议。投资者据此操作,风险自担。 如有侵权请联系删除!
-
在安徽淮南购买高尔夫车型时,价格会受到多种因素的影响,包括车辆的配置、市场行情、经销商优惠以及个人谈判...浏览全文>>
-
关于2025款安徽池州揽境的价格,目前还没有官方发布的信息。不过,您可以关注一汽大众的官方网站或当地的经销...浏览全文>>
-
截至2024年,滁州地区大众Polo的2024款车型价格可能会因配置、经销商促销活动以及具体市场需求有所不同。以下...浏览全文>>
-
根据您提供的信息,淮北地区的T-ROC探歌的最低售价为15 89万元起。如果您有意向购买这款车,以下是一些详细的...浏览全文>>
-
根据您提供的信息,安徽亳州的途锐车型目前的最低落地价为55 88万元起。这个价格是厂商指导价或经销商报价的...浏览全文>>
-
根据市场信息,2025款长安启源A05在换代之前可能会推出一些优惠政策或促销活动,以吸引消费者抓住最后的机会购...浏览全文>>
-
根据您提供的信息,2025款安徽淮北揽境的最低售价为 26 19万元起。同时提醒您,优惠活动可能有限时性,建议...浏览全文>>
-
根据您提供的信息,安徽亳州的大众途锐目前有优惠活动,最低售价为 55 88万元起。如果您计划购买途锐,现在...浏览全文>>
-
关于2025款长安启源A05的新车报价信息,目前市场上还没有官方发布的具体价格。不过,如果您正在考虑在换代前购...浏览全文>>
-
根据您提供的信息,安徽淮北地区2025款揽境的最低售价为26 19万元起。不过,请注意这可能是促销或特定配置的...浏览全文>>
- 山东济南探岳X新款价格2024款多少钱?选车指南与落地价全解析
- 济南凌渡多少钱 2025款落地价,最低售价9.59万起,现车充足
- 滁州ID.6 CROZZ落地价,配置升级,值不值得买?
- 淮南大众ID.3多少钱 2025款落地价全分析,买车不踩坑
- 安徽蚌埠ID.6 X 2023新款价格,最低售价19.3888万起,购车攻略来了
- 安徽蚌埠ID.4 CROZZ新车报价2025款,换代前的购车良机,不容错过
- 安徽蚌埠大众CC落地价,各车型售价大公开,性价比爆棚
- 天津滨海宝来价格,各配置车型售价全知晓
- 滁州帕萨特新能源价格大起底,买车超详细
- 天津滨海途观L新能源新车报价2023款,最低售价26.105万起现在该入手吗?
- 淮北T-ROC探歌价格,最低售价15.89万起,购车攻略来了
- 淮南大众ID.3多少钱 2025款落地价全分析,买车不踩坑
- 生活家PHEV 2025新款价格大起底,买车超详细
- 生活家PHEV 2025新款价格大起底,买车超详细
- 生活家PHEV最新价格2025款,价格再创新低,性价比爆棚
- 安徽亳州途昂X多少钱?购车攻略与优惠全在这
- 天津滨海宝来价格,各配置车型售价全知晓
- 安徽安庆揽巡价格全分析,买车不踩坑
- 东莞ID.4 CROZZ新款价格2025款多少钱?选车秘籍与性价比大公开
- 28.5亿美元卖身腾讯音乐,是喜马拉雅最好的归宿
- 蚌埠途铠 2023新款价格大起底,买车超详细
- 天津滨海ID.6 CROZZ多少钱?不同配置性价比分析
- 安徽阜阳探影多少钱?经销商报价及市场优惠情况
- 安徽滁州途昂X多少钱 2025款落地价大揭秘,买车前必看
- 天津滨海探岳X多少钱 2024款落地价,买车前的全方位指南
- 天津滨海ID.6 X新款价格2023款多少钱?购车攻略助你轻松选车
- 济南途安L最新价格2022款,优惠购车,最低售价16.68万起
- 安徽滁州长安猎手K50新车报价2025款,最低售价18.29万起,现车充足
- 广汽传祺传祺向往M8试驾的流程是什么
- 江淮悍途EV预约试驾,畅享豪华驾乘,体验卓越性能