一个程序中可以有多个类,但只能有一个类是主类。 ●在 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主类的加载。
前言 在上一篇文章中我们一起来看了一下 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
主程序类,主入口类 /** * @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
相信有很多人都遇到过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双击替换或者删掉再添加上合适的就可以了。
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
一个螺丝类延伸出不同的子类,子类继承了父类的特征,子类有具有自己的特征,同样的固定行为,它们可以固定不同的对象,这就是多态化结构。 二、类的特性 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.
Class 文件采用一种类似于 C 语言结构体的伪结构来存储,这种伪结构只有两种数据类型:无符号数和表。...Java的版本号是从 45 开始的,JDK1.1 之后的每个 JDK 大版本发布主版本号向上加1(JDK1.0~JDK1.1使用了45.0~45.3的版本号),高版本的 JDK 能向下兼容以前版本的 Class...6、常量池 紧随主版本号的是常量池入口,是class文件中第一个出现的表类型数据项目,也是占用Class文件空间最大的项目之一,更是Class文件结构中与其它项目关联最多的数据类型。...父类索引:用于确定这个类的父类全限类名,也是一个 u2 类型的数据。因为Java是单继承的,除了 java.lang.Object 类以外,所有的类都有父类。...所以,除了Object 类以外,所有Java类的父类索引都不为0. 接口索引:用于描述这个类实现了哪些接口,是一组 u2 类型的数据集合,第一项为 u2 类型的接口计数器,表示实现接口的个数。
在日常的开发中, 经常会遇到许多树形结构的场景, 如菜单树, 部门树, 目录树等. 而这些一般都会涉及到要将数据库查询出来的集合转化为树形结构的功能....但由于字段名可能不一致, 如菜单里可能叫 menuId, 而部门里叫 deptId,所以我用反射来实现了一个通用的工具类, 来进行转换....java.lang.reflect.Field; import java.util.ArrayList; import java.util.Collection; import java.util.HashSet...; import java.util.Set; public class TreeUtils { /** * 集合转树结构 * * @param collection...目标集合 * @param clazz 集合元素类型 * @return 转换后的树形结构 */ public static Collection
在正确编译好java程序之后,打包,然后在命令行输入java -jar ,却弹出找不到或无法加载主类。 一检查,我的path环境变量都是对的呀?java命令,程序也可以执行啊?...怎么java -jar就不行了呢? 解决办法就是,修改MANIFEST文件。 然后发现,白花花的一片咧,肯定是需要添些东西的。...Main-Class:为固定前缀 com.ilkhome.main 为所要运行的类名,别忘了带上前面的packege的名字。 至此,问题解决。
领取专属 10元无门槛券
手把手带您无忧上云