一个程序中可以有多个类,但只能有一个类是主类。 ●在 Java 应用程序中,这个主类是指包含 main()方法的类。主类是 Java 程序执行的入口点。...●在 Java 小程序中,这个主类是一个继承自系统类 JApplet 或 Applet 的子类。 应用程序的主类不一定要求是 public 类,但小程序的主类要求必须是 public 类。
Build-Jdk: 1.8.0_151 Main-Class: org.springframework.boot.loader.JarLauncher 其中有一个 Start-Class 便是这个 jar 包的入口类,...这个入口类推荐是放在一个项目的顶层包中,其他所有的类都放在其子包下面,目录结构如以下所示。...+- CustomerController.java | +- CustomerService.java | +- CustomerRepository.java...| +- order +- Order.java +- OrderController.java +- OrderService.java...+- OrderRepository.java 这个目录结构是主流及推荐的做法,而在主入口类上加上 @SpringBootApplication 注解来开启 Spring Boot
JDK 8之所以要将静态字段从instanceKlass迁移到mirror中,也不是没有道理,毕竟静态字段并非Java类的成员变量,如果从数据结构这个角度看,静态字段不能算作Java类这个数据结构的一部分...Java类加载的触发条件比较多,其中比较特殊的便是Java程序中包含main()主函数的类——这种类一般也被称作Java程序的主类。...Java主类的加载由JVM自动触发——JVM执行完自身的若干初始化逻辑之后,第一个加载的便是Java程序的主类。总体上而言,Java主类加载的链路如下: ?...Java主类的加载也无法绕过这3个接口。...主类,并最终创建Java主类在JVM内部的对等体——klassInstance,由此完成Java主类的加载。
类文件结构public class TestClass {private int m;public int inc() {return m + 1; }}1.魔数 每个Class文件的头四个字节被称为...2.版本号 紧接着后四位是Class文件的版本号,第五和第六表示次版本号MinorVersion,第七和第八表示主版本号Major Version。...TestClass.java"4.访问标志 在常量池之后就是2个字节代表访问标志 access_flags。...这里我的类只定义了一个方法,却有两个方法被编译了出来,这是为什么呢?又印证了java会给每一个类隐式定义一个构造方法。 而我的方法明明没有参数,为什么又有Arg_size=1呢?...Java语言的潜规则:在任实例方法中,都可以通过this访问到方法所属的对象——哈哈哈哈,我猜大家平时在写代码的时候在方法内引用当前类的属性都不会显式的把this.给写出来,而是直接拿属性了。
今日知识胶囊 掌握Java代码结构如同获得程序世界的建筑蓝图,类、方法、主函数三者构成代码宇宙的"黄金三角",是每个Java程序员的创世基石。...结构透视镜 类(class) → 代码宇宙的「空间站」 当你在Java世界建造程序时,每个类都是一个独立的太空舱。.....}的语法结构驱动逻辑运转 参数沙盒:参数列表像太空服调节旋钮,控制方法的输入环境 能量隔离:方法内部变量如同舱内氧气,只在本方法生态圈内循环 主函数(main) → 空间站发射的「点火按钮」 这个神秘代码段是程序世界的曲速引擎启动器...头文件分离制 主函数 固定公式 if __name__ 自由命名 方法定义 显式类型声明 动态类型 需返回值类型 历史彩蛋(代码考古学) 1995年Java诞生时,...三类代码结构实战案例集 案例一:电商系统订单处理(经典OOP模型) /** * 电商商店类 - 核心业务容器 * 对应文件必须命名为"OnlineStore.java" */ public
前言 在上一篇文章中我们一起来看了一下 Java 虚拟机的类加载过程,包括虚拟机加载、验证、准备、解析和初始化 5 个大步骤,同时我们还讨论了 Java 虚拟机加载类时采用的双亲委派模型思想。...在这篇文章中我们来一起看一下 class 文件的结构,来进一步加深我们对虚拟机的类加载机制和类机制的理解。本文参考了 《深入理解 Java 虚拟机》一书。...minor_version 按字节顺序继续往下看,接下来的 2 个字节代表该 .class 文件要求装载它的虚拟机的最低次版本号,这里为 0,证明只要虚拟机的主版本号不小于当前类文件的主版本号就可以加载这个类...最后给出所有常量类型的数据表结构(来自《深入理解 Java 虚拟机》): ? ?...除了 ConstantValue 以外,Java 虚拟机还有很多其他类型的属性表,最常见的便是 Code 表,它的结构我们在分析类文件中的方法属性时会介绍,如果虚拟机在进行属性表解析时发现属性表名不是其可以识别
指令的在当前的执行又依赖于当前所处的主类,主类并没有执行结束,因此它需要等待主类执行结束,因此会在此停顿,如下: ?...这个在于当前匿名类中没有依赖主类的代码信息。不存在上下依赖,那么就不会出现相互等待的情况发生,当然也就不会出现block。 那么就有朋友会问,为什么会相互等待呢?...那么就会开始等待主线程初始化完成,这个时候,根据classloader加载类的执行顺序,在#16就会开始等待,那么主类无法初始化完成,造成相互等待现相。...Result 匿名内置类的初始化不能依赖于外部类的初始化 lambda表达式中invokeDynamic作为主类字节码的一部分,需要等待主类初始化完成才能开始执行 总之,在类的初始化阶段,不能出现内置类...(匿名/Lambda)和主类初始化中相互依赖的对象
Class文件采用类似C语言的伪结构体来存储,这种伪结构体只有两种数据类型:无符号数和表。无符号数以u1,u2,u4,u8四种,数字代表字节数。...表用于描述有层次关系的复合结构数据,整个Class文件本质上就是一张表。...总览如下: 魔数与Class文件的版本 1.魔数0XCAFEBABE 2.次版本号和主版本号 常量池 1.类和接口的全限定名 2.字段的名称和描述符 3.方法的名称和描述符 访问标志 1.类的访问信息...,共有14总结构各不相同的表结构数据,这11种表都有一个共同的特点,就是表开始第一位是一个u1类型的标志位(tag,取值为1置12,缺少标志为2的数据类型),14种常量具体含义如下: 类型 标志 描述...因为Java不支持多重继承,所以父类索引只有一个,除了java.lang.Object外,所有Java类都有父类,因此除了java.lang.Object,所有java类的父类索引都不为0。
很多刚学java的同学基本上都遇到过这个问题,刚才我刚了一下idea中入口雷类的包的地址,就出现这个了。原因很简单,在此特做记录,希望能帮助到点开这个文章,遇到错误的你。 如果你的错误如下: ?...如果有的话,就说明,你的类的路径发生了变化,但是这个idea的工具的启动类是不会变的。 所以咱们就改呗。 第一种方法: 1、点击编辑 ? 2、选择上自己的java入口类 ?
背景 默许jdk的配置大家都没有问题,执行java,javac无报错,但今天在尝试在本地起来kafka的时候,提示java 找不到或无法加载主类,然后日志中提示 Files 找不到或无法加载主类;C:\...Program 分析 其实很轻松的猜测出来,是因为我java安装在C:\Program Files\Java的原因,目录有空格,大多数的时候,这应该不会有问题的,但谁知道启动kafka的时报这个错误 解决方法
repackage 我们就会发现多了一个文件 这样在重新执行java
C:\Java\IdeaProjects\java>java xxxx 错误: 找不到或无法加载主类 xxxx 检查java在Idea终端中是否可用,如不可用,编辑编译器输出路径:文件→项目结构→模块→...路径→输出目录 或 设置→工具→终端→项目设置→环境变量 // https://cn.fankuiba.com C:\Java\IdeaProjects\java>java -version java...version "1.8.0_231" Java(TM) SE Runtime Environment (build 1.8.0_231-b11) Java HotSpot(TM) 64-Bit Server...VM (build 25.231-b11, mixed mode) 检查java在命令行PowerShell中是否可用,如不可用配置好系统环境变量 PS C:\Users\XX> java ......PS C:\Users\XX> java xxxx 错误: 找不到或无法加载主类 xxxx 手动拷贝项目路径下的class文件到C:\Users\XX> 下可正常执行 在各终端下cd到class文件存放路径即可
第一行释义: magic:魔数,0xCAFEBABE(cafe babe) minor_version:占2字节,次版本号,0x0000 majro_version:占2字节,主版本号,0x0031,转化为十进制为...Class类文件结构 class文件的结构 简单讲,jvm的class文件是针对jvm的私家定制。只要运行在jvm上byte code,都需要按照class文件format来。否则jvm解析不了。...官网文档: The Java Virtual Machine class file format class文件时java虚拟机执行引擎的数据入口,也是java技术体系的基础支柱之一,了解class文件的结构对后面进一步了解虚拟机执行引擎有很重要的意义...;//主版本号 u2 constant_pool_count;//常量池容量计数值 cp_info constant_pool[constant_pool_count-1];//...常量池 u2 access_flags;//访问标志 u2 this_class;//类索引 u2 super_class;//父类索引 u2 interfaces_count
相信有很多人都遇到过java找不到或无法加载主类的这个问题,那么这究竟是什么原因造成的呢?有什么方法可以解决这个问题吗?...问题: java文件导入到一个包当中,之后在class文件当中加入一张图片; 解决:将class文件中的照片删除即可 当然这只是一种情况,对于这样的情况下面做了一下总结,主要的话有下面的几种解决方法。...配置如下: JAVA_HOME是 D:\Java\jdk1.8.0_11 Path是 %JAVA_HOME%\bin;%JAVA_HOME%\jre\bin CLASSPATH是 ** ....;%JAVA_HOME%lib;%JAVA_HOME%lib\tools.jar** 这里的话要注意一下了,classpath最前面的 ....打上对勾; 点击项目右键properties->Java Build Path->Libraries 将带红叉的jre双击替换或者删掉再添加上合适的就可以了。
主程序类,主入口类 /** * @SpringBootApplication 来标注一个主程序类,说明这是一个Spring Boot应用 */ @SpringBootApplication public...Spring Boot的主配置类,Spring Boot就应该允许这个类的main方法来启动SpringBoot应用; @SpringBootConfiguration:SpringBoot的配置类;表追在某个类上...,标识这是一个SpringBoot的配置类@Configuration: 配置雷尚来标注这个注解 配置类----配置文件;配置类也是容器中的一个组件;@Component @EnableAutoConfiguration...AutoConfigurationPackages.Registrar.class); Spring的底层注解@import,给容器中导入一个组件;导入 的组件由AutoConfigurationPackages.Registrar.class 将主配置类...(@SpringBootApplication标注的类)的所有包及下面所有组件扫描到Spring容器; @Import(AutoConfigurationPackages.Registrar.class
2.主程序类,主入口类 /** * @SpringBootApplication 来标注一个主程序类,说明这是一个Spring Boot应用 */ @SpringBootApplication public...SpringBoot的主配置类,SpringBoot就应该运行这个类的main方法来启动SpringBoot应用 @Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME...标注在某个类上,表示这是一个Spring Boot的配置类; @Configuration:配置类上来标注这个注解; 配置类 ----- 配置文件;配置类也是容器中的一个组件;@Component...AutoConfigurationPackages.Registrar.class): Spring的底层注解@Import,给容器中导入一个组件;导入的组件由AutoConfigurationPackages.Registrar.class; 将主配置类...); Spring Boot在启动的时候从类路径下的META-INF/spring.factories中获取EnableAutoConfiguration指定的值,将这些值作为自动配置类导入到容器中,自动配置类就生效
从入门到项目实战.Java类集框架.List集合; import java.util.ArrayList; import java.util.Arrays; import java.util.List;...package Java从入门到项目实战.Java类集框架.Set集合; import java.util.Iterator; import java.util.LinkedHashSet; import...实例: package Java从入门到项目实战.Java类集框架.集合输出; import java.util.Iterator; import java.util.Set; public class...实例:执行双向迭代 package Java从入门到项目实战.Java类集框架.集合输出; import java.util.ArrayList; import java.util.List; import...如果Value与Key设置为null,则会报错:java.lang.NullPointerException HashMap子类: 特点:采用散列方式保存数据,即无序排列 继承结构: public class
IDEA Java 找不到或无法加载主类怎么解决 在使用 IntelliJ IDEA 进行 Java 开发时,偶尔会遇到 “找不到或无法加载主类” 这个令人头疼的问题。...Java 运行时环境及相关命令,导致主类加载失败。...例如,在一台新配置的电脑上安装了 IDEA 却忘记设置 JAVA_HOME,IDEA 就如同迷失方向的旅人,不知去哪里寻找 Java 核心类库来启动主类。...代码与项目结构问题 包声明错误:Java 类若处于某个包下,其包声明语句必须与文件系统目录结构严格对应。...例如,缓存中保存的类路径信息过时,与项目最新结构不匹配,就像地图导航用了过期地图数据,指引去加载主类时就会出错。
一个螺丝类延伸出不同的子类,子类继承了父类的特征,子类有具有自己的特征,同样的固定行为,它们可以固定不同的对象,这就是多态化结构。 二、类的特性 1.成员变量:成员变量就是Java中累的属性。...2.成员方法:成员方法就是Java中类的行为。 3.局部变量:如果在成员方法内定义一个变量,那这个变量就是局部变量。 局部变量是在方法被执行时创建,在方法结束时销毁。...主方法是类的入口点,他定义了程序从何处开始:主方法提供对程序流向的控制,Java编译器通过主方法来执行程序。...注意: 主方法是静态的,所以要直接在主方法中调用其他方法德华该方法必须也是静态的。 主方法没有返回值。 主方法的形参是数组。...六、对象的特性 对象的创建 Java中使用 new 操作符调用构造方法就可以创建一个对象。 ? 对象的引用 在Java中一切都可以看作是对象,但真正的操作标识符实质上是一个引用。 ?
首先来说说遇到的问题 : 错误: 找不到或无法加载主类 .Library.Java.JavaVirtualMachines.jdk1.8.0_291.jdk.Contents.Home.bin.java...下面来看一下配置 //conf/hbase-env.sh export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_291.
领取专属 10元无门槛券
手把手带您无忧上云