java文件命令行报错: 找不到或无法加载主类XXX报错及解决

前言

之前遇到过几次,后面稀里糊涂的解决了。今天详细记录一下,可能不全或有些错误,还请各位指正。

你要启动一个类的话首先要有类。

在这里,类有两种,

  • 一个是带包名(package)的
  • 还有一个是没包名(package)的

但都需要有一个公共的静态 main方法,不然怎么也启动不了。

一、不带包名的

我们以一个路径为E:\demo\Welcome.java的例子导入

// Welcome.java
public class Welcome {public static void main(String[] args) {System.out.println("Welcome to learn Java!");}
}

在这里插入图片描述

1、编译运行

在终端中,编译运行成功的正确操作是:

  • 进入类所在的文件E:\demo
    在这里插入图片描述
  • 使用javac Welcome.java进行编译生成class文件
    在这里插入图片描述
    在这里插入图片描述
  • 使用java Welcome运行成功
    在这里插入图片描述

2、注意事项

  • 如果手工输人源程序,一定要注意正确地输人大小写。例如,类名为welcome,而不是welcome或WELCOME。

  • 编译器需要-一个文件名(Welcome.java), 而运行程序时,只需要指定类名(Welcome), 不要带扩展名.java 或.class。

  • 如果看到诸如Bad command or file namejavac:command not found之类的消息,就要返回去反复检查安装是否有问题,特别是可执行路径的设置。

  • 如果javac报告了一个错误,指出无法找到Welcome.java,就应该检查目录中是否存在。

    • 在Linux环境下,检查Welcome.java是否以正确的大写字母开头。
    • 在Windows环境下,使用命令dir,而不要使用图形浏览器具。有些文本编辑器(特别是Notepad)会在每个文件名后面添加扩展名.txt。如果使用Notepad编辑Welcome.java,实际上会把它保存为Welcome.java.txt。

3、java. lang.NoClassDefFoundError错误的原因

  • 如果收到关于welcome (W为小写)的错误消息

    应该重新执行命令: java Welcome(W为大写)。记住,Java区分大小写。

  • 如果收到有关demo/java的错误信息

    说明你错误地键人了java Welcome.java , 应该重新执行命令java Welcome。

  • 如果键入java Welcome, 而虚拟机没有找到Welcome类,就应该检查是否有人设置了系统的CLASSPATH环境变量(将这个变量设置为全局并不是提倡的做法,然而,Windows中有些比较差的软件安装程序确实会这样做)。可以像设置PATH环境变量–样设CLASSPATH,不过这里将删除这个设置。

二、带包的

在demo文件夹中新建一个Mypackage文件夹里面定义一个Welcome2类。E:\demo\MyPackage\Welcome2.java

// Welcome2.java
package MyPackage;public class Welcome2 {public static void main(String[] args) {System.out.println("Welcome to learn Java222!");}
}

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

1、编译运行

  • 命令行进入当前文件夹

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  • 使用javac Welcome2.java完成编译,生成class文件

    在这里插入图片描述

  • 使用java命令运行程序

    • 这里与不带包的类运行有所不同

    • 在当前类文件夹下使用java Welcome2会报找不到类的错误(我不知道为什么)

      在这里插入图片描述

    • 此时应该退回package所在的目录,这里是demo文件夹使用java运行,但是有由一些问题:

      使用java MyPackage\Welcome2(tab自动补全的)也会报错(我也不明白-_-!)

      使用java MyPackage/Welcome2运行成功

      在这里插入图片描述

  • 直接在package所在目录下编译也是可以的

    在这里插入图片描述

2、错误

其他错误原因同不带package的类。

三、总结

  • 不带package的类

    直接在类所在目录下编译运行即可,常见的错误为类不存在、类名写错、环境配置……

  • 带package的类

    在package所在目录下编译运行,注意路径不要用tab键生成的\符,而是用/,否则也找不到。不清楚是为什么,欢迎大神评论指出。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/103237.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

redis高可用——主从复制、哨兵模式、cluster集群

1、redis群集有三种模式 分别是主从同步/复制、哨兵模式、Cluster,下面会讲解一下三种模式的工作方式,以及如何搭建cIustr群集 主从复制:主从复制是高可用Redis的基础,哨兵和集群都是在主从复制基础上实现高可用的。主从复制主要实现了数据的…

VSCode学习笔记一:添加代码模板

一目了然 1 简述2 设置模板3 Global Snippets file示例 1 简述 问:为什么要设置代码模板? 答:编程语言是有个性的,不同语言的演讲风格是不一样的。 旁白:我不懂?! 问:为什么要设置…

idea2021.1.3版本双击启动,没反应

今天打开电脑,点开idea,界面悬在这里,几秒然后就是没了。然后就一直打不开idea了。 然后又是卸载重装,又是删除缓存文件。我把电脑关于idea的文件全都删除了 。重新安装后(首次运行倒是可以打开,但是关掉id…

搭建自己的OCR服务,第三步:PPOCRLabel标注工具安装

一、安装说明 安装好了PaddleOCR后,还需要安装PPOCRLabel这个标注工具,想要自己训练模型的话,有个标注工具会起很大作用。 尤其是PPOCRLabel就是跟PaddleOCR配套的标注工具,同样是开源的。 在下载 PaddleOCR 整个源码中&#x…

冠达管理:“旺季”来临,煤炭板块走高,云煤能源、陕西黑猫涨停

煤炭板块1日盘中发力走高,截至发稿,云煤动力、陕西黑猫涨停,兖矿动力涨超7%,晋控煤业、华阳股份涨超6%,山西焦煤、平煤股份涨超5%。 组织表明,动力大通胀背景下,未来3-5年煤炭供需偏紧的格局仍…

创邻科技图数据库课程走进一流高校

《图数据库原理和实践》 正式开课! 最近,浙江大学计算机学院新开了一门名为 《图数据库原理和实践》 的新课程,该课程由创邻科技和浙江大学联合推出,吸引了许多学生踊跃参与! 曾为浙大学子的创邻科技CTO周研博士作为…

VBA技术资料MF54:VBA_EXCEL实时获取鼠标位置

【分享成果,随喜正能量】若人散乱心,乃至以一花,供养于画像,渐见无数佛。所以发一幅释迦牟尼佛像,与同修善友一起每日在微博上供养,只要有供养之心,便可积累功德。以此回向,愿求者如…

YOLOV7改进-添加基于注意力机制的目标检测头(DYHEAD)

DYHEAD 复制到这: 1、models下新建文件 2、yolo.py中import一下 3、改IDetect这里 4、论文中说6的效果最好,但参数量不少,做一下工作量 5、在进入IDetect之前,会对RepConv做卷积 5、因为DYHEAD需要三个层输入的特征层一致&am…

【Python】迭代器__iter__、__next__

这里主要纠正迭代器的用法,因为一些教程传播错误示例让我很无语。 最大的错误就是,把__iter__和__next写在同个类里,每每看见都感到诧异。不是说这方法不行,主要是,一旦出现预期之外的运行结果往往很难查到原因(因为它…

【云原生】Kubeadmin安装k8s集群

目录 前言: 一 环境部署 1.1 服务器部署功能 1.2 环境准备(所有节点) 二 安装docker(所有节点) 三 所有节点安装kubeadm,kubelet和kubectl 3.1 定义kubernetes源 3.2 开机自启kubelet 四 部署K8S集…

“数智+绿色”驱动,宏工科技助力线缆线材稳定高品质生产

9月4日-7日,WIRE CHINA 2023中国国际线缆及线材展览会在上海新国际博览中心举办。宏工科技现场展出线缆线材自动化生产一站式解决方案,与现场观众共商“数字化、智能化、绿色化”发展机遇。 线缆是制造业中最大或产品使用范围最广的基础性配套产业之一&a…

1.4 空间中的曲线和曲面

空间中的曲线与曲面 知识点1 曲面方程定义 定义1 如果曲面 S 与方程F (x,y,z ) 0 有下述关系: (1) 曲面 S 上的任意点的坐标都满足此方程 (2)不在曲面S上的点的坐标不满足此方程 则F(x,y,z&#xff0…