JDK11 | 第五篇 : 启动单个Java源代码文件的程序

简介: JEP330-启动单文件代码程序(Launch Single-File Source-Code Programs),是JDK11中一个很不错的功能。这个功能允许你直接使用java解析器运行java代码,java文件会在内存中执行编译并且直接执行。

文章首发于公众号《程序员果果》

地址 : https://mp.weixin.qq.com/s/h1L4FmzVSix434gVt8Fc7w

一、简介

JEP330-启动单文件代码程序(Launch Single-File Source-Code Programs),是JDK11中一个很不错的功能。这个功能允许你直接使用java解析器运行java代码,java文件会在内存中执行编译并且直接执行。唯一的约束在于所有相关的类必须定义在东一个java文件中。

二、实例

案例1

创建一个 Test.java 文件 ,代码如下:

public class Test {

    public static void main(String[] args) {
        System.out.println("Test ...");
    }
 
}
AI 代码解读

执行上面的代码

jdk11之前 :

javac Test.java
java Test
AI 代码解读

jdk11:

java Test.java
AI 代码解读

结论:jdk11中,通过 java xxx.java 命令,就可直接运行源码文件程序,而且不会产生.class 文件。

案例2

问题:如果一个java文件中存在多个类 ,通过 java xxx.java 运行源码文件,会执行哪一个main方法 ?

创建一个 Test1.java 文件,代码如下:

class Test2 { 
    public static void main(String[] args) {
        System.out.println("Test2");
    }
}

public class Test {

    public static void main(String[] args) {
        System.out.println("Test");
    }
 
}
AI 代码解读

通过 java Test.java 运行后输出 "Test2"。

下面我们颠倒 Test Test2 两个类的位置:

public class Test {

    public static void main(String[] args) {
        System.out.println("Test");
    }
 
}

class Test2 { 
    public static void main(String[] args) {
        System.out.println("Test2");
    }
}
AI 代码解读

通过 java Test.java 运行后输出 "Test"。

结论:一个java文件中包含多个类时,java xxx.java 执行排在最上面的一个类的main方法。

案例3

问题:如果一个java文件中类的方法中调用了另一个java文件中类的方法,通过 java xxx.java 运行源码文件,能运行通过吗 ?

创建两个java文件 Student.java 、Teacher.java。

Student.java:

public class Student { 

    public static void main(String[] args) {
        Teacher teacher = new Teacher();
        teacher.toString();
    }
}
AI 代码解读

Student.java:

public class Teacher {

    private String name;
    private String subject;

    public void setName(String name){
        this.name = name;
    }
    public String getName(){
        return name;
    }
    public void setSubject(String subject){
        this.subject = subject;
    }
    public String getSubject(){
        return subject;
    }
 
}
AI 代码解读

执行 java Student.java 报错 :

Student.java:4: 错误: 找不到符号
        Teacher teacher = new Teacher();
        ^
  符号:   类 Teacher
  位置: 类 Student
Student.java:4: 错误: 找不到符号
        Teacher teacher = new Teacher();
                              ^
  符号:   类 Teacher
  位置: 类 Student
2 个错误
AI 代码解读

把 Student 和 Teacher 连个类 放在一个java文件中 ,重新运行,运行通过。

结论:java xxx.java 启动单个Java源代码文件的程序时,相关个类必须定义在同一个java文件中。

三、结论

通过上面的三个案例,我得出以下结论:

  • jdk11中,通过 java xxx.java 命令,就可直接运行源码文件程序,而且不会产生.class 文件。
  • 一个java文件中包含多个类时,java xxx.java 执行排在最上面的一个类的main方法。
  • java xxx.java 启动单个Java源代码文件的程序时,相关个类必须定义在同一个java文件中。
目录
打赏
0
0
0
0
25
分享
相关文章
解锁“分享文件”高效密码:探秘 Java 二叉搜索树算法
在信息爆炸的时代,文件分享至关重要。二叉搜索树(BST)以其高效的查找性能,为文件分享优化提供了新路径。本文聚焦Java环境下BST的应用,介绍其基础结构、实现示例及进阶优化。BST通过有序节点快速定位文件,结合自平衡树、多线程和权限管理,大幅提升文件分享效率与安全性。代码示例展示了文件插入与查找的基本操作,适用于大规模并发场景,确保分享过程流畅高效。掌握BST算法,助力文件分享创新发展。
消防救援支队消防员单兵装备智能养护舱电机驱动java版程序(二)
本文探讨消防救援中智能养护舱电机驱动的Java程序设计,作为系列文章第二部分。通过自动化和智能化手段,智能养护舱提升了装备维护效率与准确性。文章详细介绍了电机驱动模块的设计与实现,包括硬件选型、PID控制策略、安全保护机制及Java程序架构,确保电机精确控制、稳定性和安全性。未来将优化功能并引入智能算法和物联网技术,进一步提升装备维护智能化水平。
消防救援支队消防员单兵装备智能养护舱点击驱动java版程序(一)
智能消防作战服架通过电机驱动系统提升消防员作业效率和安全性。本文介绍基于Java的电机驱动程序开发,涵盖硬件准备、软件环境搭建及驱动程序实现。重点包括串口通信配置、电机控制类设计与控制逻辑实现,确保电机高效稳定运行。通过正确配置通信协议和串口参数,并添加异常处理机制,保障系统的安全性和可靠性。
深潜数据海洋:Java文件读写全面解析与实战指南
通过本文的详细解析与实战示例,您可以系统地掌握Java中各种文件读写操作,从基本的读写到高效的NIO操作,再到文件复制、移动和删除。希望这些内容能够帮助您在实际项目中处理文件数据,提高开发效率和代码质量。
15 0
FastExcel:开源的 JAVA 解析 Excel 工具,集成 AI 通过自然语言处理 Excel 文件,完全兼容 EasyExcel
FastExcel 是一款基于 Java 的高性能 Excel 处理工具,专注于优化大规模数据处理,提供简洁易用的 API 和流式操作能力,支持从 EasyExcel 无缝迁移。
290 9
FastExcel:开源的 JAVA 解析 Excel 工具,集成 AI 通过自然语言处理 Excel 文件,完全兼容 EasyExcel
|
2月前
|
java实现从HDFS上下载文件及文件夹的功能,以流形式输出,便于用户自定义保存任何路径下
java实现从HDFS上下载文件及文件夹的功能,以流形式输出,便于用户自定义保存任何路径下
121 34
Git使用教程-将idea本地Java等文件配置到gitte上【保姆级教程】
本内容详细介绍了使用Git进行版本控制的全过程,涵盖从本地仓库创建到远程仓库配置,以及最终推送代码至远程仓库的步骤。
44 0
Java 异常处理:筑牢程序稳定性的 “安全网”
本文深入探讨Java异常处理,涵盖异常的基础分类、处理机制及最佳实践。从`Error`与`Exception`的区分,到`try-catch-finally`和`throws`的运用,再到自定义异常的设计,全面解析如何有效管理程序中的异常情况,提升代码的健壮性和可维护性。通过实例代码,帮助开发者掌握异常处理技巧,确保程序稳定运行。
77 2
|
5月前
|
安装JDK18没有JRE环境的解决办法
安装JDK18没有JRE环境的解决办法
570 61
"解锁Java Web传奇之旅:从JDK1.8到Tomcat,再到MariaDB,一场跨越数据库的冒险安装盛宴,挑战你的技术极限!"
【8月更文挑战第19天】在Linux上搭建Java Web应用环境,需安装JDK 1.8、Tomcat及MariaDB。本指南详述了使用apt-get安装OpenJDK 1.8的方法,并验证其版本。接着下载与解压Tomcat至`/usr/local/`目录,并启动服务。最后,通过apt-get安装MariaDB,设置基本安全配置。完成这些步骤后,即可验证各组件的状态,为部署Java Web应用打下基础。
82 1

热门文章

最新文章

AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等