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.mzph.cn/news/73119.shtml

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

相关文章

解决vagrant安装的centos7,在window主机重装系统过后,再次用vagrant启动centos7却无法启动

场景: vagrant安装的centos7,在window主机重装系统过后,再次用vagrant启动centos7却无法启动 检查 VirtualBox 版本:确保你安装的 VirtualBox 版本与 Vagrant 兼容。如果你更新了 VirtualBox,可能需要同时更新 Vagran…

算法刷题记录-双指针/滑动窗口(LeetCode)

809. Expressive Words 思路 根据题目描述,我们可以知道,如果要将某个单词定义为可扩张(stretchy),需要满足如下两个条件: 所以,我们在实现的时候,可以通过两个指针p1和p2&#x…

FiberNode结构解析

FiberNode结构解析 FiberNode(也称为 Fiber 节点)是 React Fiber 架构中的核心概念之一,用于表示组件的层级结构和渲染过程中的任务。 function FiberNode(tag, pendingProps, key, mode) {// Instancethis.tag tag;this.key key;this.el…

数据库: 存储过程

sql server begin end用法: SQL Server中的BEGIN END用法是用于定义一个代码块,这个代码块可以包含多个SQL语句,BEGIN END通常用于控制流程语句,例如IF语句、WHILE语句、TRY CATCH语句等。在BEGIN END代码块中,可以使用变量、函数…

Python爬虫:Selenium的介绍及简单示例

Selenium是一个用于自动化Web应用程序测试的开源工具。它允许开发人员模拟用户在浏览器中的交互行为,以便自动执行各种测试任务,包括功能测试、性能测试和回归测试等。Selenium最初是为Web应用程序测试而创建的,但它也可用于Web数据抓取和其他…

C#学习 - 初识类型、变量、方法

构成C#语言的基本元素 关键字、操作符、标识符、文本都是标记(Token),编译器能够识别 关键字(Keyword) C#有一般关键字(C# Keyword:任何时候都是关键字)和上下文关键字&#xff0…

Swift报错:“‘nil‘ is incompatible with return type ‘User‘”

func getUserById(userId: Int) -> User {if (userId ! nil) {...}return nil } 上述代码报了一个错误:“nil is incompatible with return type User”,表示“nil”与返回类型“User”不兼容。 解决方案: 将返回值类型改为Optional类型…

Jmeter进阶使用指南-分布式测试

当你需要模拟大量并发用户并测试应用程序的性能时,JMeter的分布式测试功能非常有用。分布式测试允许你使用多个JMeter实例来模拟并发用户,从而提供更高的负载。 下面是一个详细的介绍和讲解分布式测试的步骤: 准备主机和从机: 首…

计算机竞赛 基于深度学习的植物识别算法 - cnn opencv python

文章目录 0 前言1 课题背景2 具体实现3 数据收集和处理3 MobileNetV2网络4 损失函数softmax 交叉熵4.1 softmax函数4.2 交叉熵损失函数 5 优化器SGD6 最后 0 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 **基于深度学习的植物识别算法 ** …

Vue3---uni-app--高德地图引用BUG

先给报错信息:module libs/map//libs/map_min.js is not defined, require args is /libs/map_min.js 查看我引用方法: 本人查阅资料发现 是 require 使用的是 commonJS方式引用说这个适配Vue2可我项目是Vue3应该使用ES6语法糖 然后我有跑了项目发现BU…

蓝桥杯官网练习题(凑算式)

类似填空题: ①算式900: https://blog.csdn.net/s44Sc21/article/details/132746513?spm1001.2014.3001.5501https://blog.csdn.net/s44Sc21/article/details/132746513?spm1001.2014.3001.5501 ②九宫幻方③七星填数④幻方填空:https:/…

Competitive Collaboration 论文阅读

论文信息 题目:Competitive Collaboration: Joint Unsupervised Learning of Depth, Camera Motion, Optical Flow and Motion Segmentation 作者:Anurag Ranjan, Varun Jampani, Lukas Balles 来源:CVPR 时间&#x…

JVM学习(三)--生产环境的线程问题诊断

1.如何定位哪个进程对cpu占用过高 使用top命令 2.如何定位到某个进程的具体某个线程 使用ps H -eo pid,tid,%cpu | grep 进程id (可以具体定位到某个进程的某个线程的cpu占用情况) 3.如何查看有问题线程的具体信息,定位到代码的行数 使用jstack 进程id |grep…

【 OpenGauss源码学习 —— 列存储(analyze)(四)】

列存储(analyze) AcquireSampleCStoreRows 函数es_get_attnums_to_analyze 函数CStoreRelGetCUNumByNow 函数CStore::GetLivedRowNumbers 函数InitGetValFunc 函数CStoreGetfstColIdx 函数CStore::GetCUDesc 函数CStore::IsTheWholeCuDeleted 函数CStore…

PHP调用java class 类实现文件签名

PHP调用java class 类实现文件签名 原始代码改造开始PHP内调用方式起因:对接某平台API接口,发送的文件需要做 SM3 签名,对方平台是java写的,只有java加密示例,照着java的加密算法翻译为PHP版本,在编码转换上始终有些差异。没办法,只能想办法使用他们的java方式。 原始代…

vue开发-语法和基础流程规范

当一个请求发生的时候 后端的扭转流程对标前端的扭转过程 ***vue 中 整体url触发整体流程服务流程: node 中定义了默认加载 vue.config.js 文件 (vue.config.js 文件名不可更改)-> vue.config.js 中 devServer 绑定了个 ip端口 和资源 -》…

Java版本企业工程行业管理系统源码

Java版工程项目管理系统 Spring CloudSpring BootMybatisVueElementUI前后端分离 功能清单如下: 首页 工作台:待办工作、消息通知、预警信息,点击可进入相应的列表 项目进度图表:选择(总体或单个)项目显示1…

初学Python记

Python这个编程语言的大名当然听说过了呀,这几年特别火,火的一塌涂地。大家可以回忆一下:朋友圈推荐的广告里经常可以看见python的网课广告。 本学期,学校开设了python课程,这几天学习了一下入了一下门,感…

OpenHarmony:如何使用HDF驱动控制LED灯

一、程序简介 该程序是基于OpenHarmony标准系统编写的基础外设类:RGB LED。 目前已在凌蒙派-RK3568开发板跑通。详细资料请参考官网:https://gitee.com/Lockzhiner-Electronics/lockzhiner-rk3568-openharmony/tree/master/samples/b02_hdf_rgb_led。 …

C++ 判断

C 判断 判断结构要求程序员指定一个或多个要评估或测试的条件,以及条件为真时要执行的语句(必需的)和条件为假时要执行的语句(可选的)。 下面是大多数编程语言中典型的判断结构的一般形式: 判断语句 C 编…