0

0

在Java里如何定义main方法_Java程序入口语法说明

P粉602998670

P粉602998670

发布时间:2026-02-04 10:25:03

|

307人浏览过

|

来源于php中文网

原创

Java虚拟机唯一识别public static void main(String[] args)这一签名,参数名和数组声明形式可变但类型与维度不可改,非public类或文件名不匹配会导致类加载失败,var和模块未导出亦引发运行错误。

在java里如何定义main方法_java程序入口语法说明

main方法必须是public static void类型的

Java虚拟机只认一种签名的入口方法,任何偏差都会导致“找不到主类”或“Main method not found”错误。不是public、漏了static、返回类型写成intString,统统不认。

常见错误现象:

  • 运行时报错:Error: Main method not found in class X, please define the main method as: public static void main(String[] args)
  • IDE能编译通过但无法运行(比如把static误写成final

正确签名只有一种:public static void main(String[] args)。其他变体如public static void main(String... args)虽语法合法,但JVM不识别——可编译,不可作为入口。

参数名和数组声明形式可以变化,但类型和维度不能改

args只是习惯命名,换成argvarguments都行;String[] argsString args[]在Java中等价,都是合法的。

立即学习Java免费学习笔记(深入)”;

但以下写法全部无效:

  • String args(缺数组符号)
  • String[][] args(二维数组)
  • Object[] args(类型不匹配)
  • public static void main(String... args)(可变参数,JVM不识别)

示例对比:

SeekAll
SeekAll

SeekAll是一款浏览器搜索聚合插件,支持在多个窗口中同时搜索。

下载
public static void main(String[] args)    // ✅ 正确
public static void main(String args[])    // ✅ 合法,等价
public static void main(String... args)   // ❌ 编译过,但运行报错

main方法必须定义在public类中,且类名与文件名严格一致

如果类声明为public class Hello,那么文件名必须是Hello.java。否则即使main写对了,javac编译会失败,或java命令执行时抛出NoClassDefFoundError

容易被忽略的细节:

  • 大小写敏感:Linux/macOS下hello.javaHello.java是不同文件
  • 非public类可以有main方法,但不能用java 类名直接运行(需通过其他public类调用)
  • 一个文件里可以有多个类,但只能有一个public类,且必须与文件同名

main方法里不能用var声明参数,也不能依赖模块系统隐式导包

JDK 10+支持var局部变量推导,但main签名是JVM硬编码识别的,不接受var args这类写法——它根本不是变量声明,而是方法签名的一部分。

另外,如果用了模块系统(module-info.java),记得显式导出含main的包,否则即使类存在,启动时也可能因模块不可见而失败。

典型陷阱:

  • public static void main(var args[])编译错误:非法的类型
  • 模块未导出,运行时报java.lang.NoClassDefFoundError或静默失败

复杂点在于:错误可能不直接指向main本身,而是藏在类加载或模块可见性层面,调试时得往java -p--add-exports这些地方查。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
string转int
string转int

在编程中,我们经常会遇到需要将字符串(str)转换为整数(int)的情况。这可能是因为我们需要对字符串进行数值计算,或者需要将用户输入的字符串转换为整数进行处理。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

563

2023.08.02

typedef和define区别
typedef和define区别

typedef和define区别在类型检查、作用范围、可读性、错误处理和内存占用等。本专题为大家提供typedef和define相关的文章、下载、课程内容,供大家免费下载体验。

109

2023.09.26

define的用法
define的用法

define用法:1、定义常量;2、定义函数宏:3、定义条件编译;4、定义多行宏。更多关于define的用法的内容,大家可以阅读本专题下的文章。

341

2023.10.11

scripterror怎么解决
scripterror怎么解决

scripterror的解决办法有检查语法、文件路径、检查网络连接、浏览器兼容性、使用try-catch语句、使用开发者工具进行调试、更新浏览器和JavaScript库或寻求专业帮助等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

288

2023.10.18

500error怎么解决
500error怎么解决

500error的解决办法有检查服务器日志、检查代码、检查服务器配置、更新软件版本、重新启动服务、调试代码和寻求帮助等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

306

2023.10.25

string转int
string转int

在编程中,我们经常会遇到需要将字符串(str)转换为整数(int)的情况。这可能是因为我们需要对字符串进行数值计算,或者需要将用户输入的字符串转换为整数进行处理。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

563

2023.08.02

int占多少字节
int占多少字节

int占4个字节,意味着一个int变量可以存储范围在-2,147,483,648到2,147,483,647之间的整数值,在某些情况下也可能是2个字节或8个字节,int是一种常用的数据类型,用于表示整数,需要根据具体情况选择合适的数据类型,以确保程序的正确性和性能。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

547

2024.08.29

c++怎么把double转成int
c++怎么把double转成int

本专题整合了 c++ double相关教程,阅读专题下面的文章了解更多详细内容。

153

2025.08.29

全国统一发票查询平台入口合集
全国统一发票查询平台入口合集

本专题整合了全国统一发票查询入口地址合集,阅读专题下面的文章了解更多详细入口。

37

2026.02.03

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL 教程
PostgreSQL 教程

共48课时 | 8.4万人学习

Git 教程
Git 教程

共21课时 | 3.3万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号