jdk12源代码文件_JDK 11:轻松取出单文件Java源代码程序

jdk12源代码文件

JDK 11 Early Access Builds包含与JEP 330相关的预览功能(“启动单个文件源代码程序”)。

我之前在“ Shebang即将来到Java? ”和“ 针对JDK 11提议的JEP 329和JEP 330 ”,由于JDK 11 Early Access Builds,在这篇文章中,我将介绍此功能。

对于此演示,我正在使用最新的(截至撰写本文时) OpenJDK JDK 11 Early Access Build 24

单个文件的Java源代码

使用-help标志( java -help )时,可以看到此JDK发行版包含对JEP 330的支持的最早迹象之一:

单个文件的Java源代码

如上图所示,“帮助”以“ usage”语句开头,而usage语句中的最后一个示例描述了如何使用Java启动器( java )运行单文件源代码程序。 具体来说,输出显示以下“用法”,此处突出显示了本文的主题用法:

Usage: java [options] <mainclass> [args...](to execute a class)or  java [options] -jar <jarfile> [args...](to execute a jar file)or  java [options] -m <module>[/<mainclass>] [args...]java [options] --module <module>[/<mainclass>] [args...](to execute the main class in a module)or  java [options] <sourcefile> [args](to execute a single source-file program)

为了演示此功能,我将使用一个简单的示例(略微),该示例改编自OpenJDK jdk-dev邮件列表上2018年5月24日的Mario Torre帖子中提供的示例。

helloYou.jv

#!/bin/java
public class Hello
{public static void main(final String[] args){final String name = System.console().readLine("\nPlease enter your name: ");System.console().printf("Hello, %s!%n", name);}
}

我已经将此文件helloYou.jv 。 请注意,它不以常规Java源代码文件结尾的.java扩展名结尾,并且我没有将文件名与类名匹配。 实际上,我以小写字母开头文件的名称!

当我尝试直接使用OpenJDK 11 EA-24运行此文件时,出现错误(“找不到或加载主类helloYou.jv”):

单个文件的Java源代码

发生此错误的原因是,此早期访问版本中的JEP 330支持是“预览”功能。 以下屏幕快照展示了当我将标志--source=11--enable-preview传递给Java启动器时,它可以工作。

单个文件的Java源代码

我在我的文章“ Shebang即将来到Java吗? ”,这听起来像是不允许JEP 330支持使用的单文件源程序以.java扩展名结尾(该扩展.java保留给传统Java源文件)。 在下一个屏幕快照中似乎是这种情况,在该屏幕快照中,我尝试针对与上述相同的代码运行此功能,但现在文件名为helloYou. java helloYou. java

单个文件的源代码

最后一个图像说明我们无法使用shebang运行.java文件,因为它们被视为常规Java文件,因此必须符合常规Java源代码文件的规范。

使用此早期访问版本,如果我注释掉shebang行,则可以运行单个源代码文件helloYou.java (即使具有.java扩展名,也没有--enable-preview标志)。

单个文件的源代码

如果我尝试使用OpenJDK JDK 10进行最后的操作,尝试运行如上所示的Java源代码文件,将产生前面讨论的错误消息:“错误:找不到或加载主类helloYou.java”。

这篇文章是对预览功能单文件源代码程序的初步了解,该功能现在在JDK 11 Early Access Builds中可用。

翻译自: https://www.javacodegeeks.com/2018/08/jdk-11-single-file-source-code.html

jdk12源代码文件

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/333077.shtml

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

相关文章

网关过滤器验证token

一、JwtUtil 工具类 package com.changgou.system.utils;/*** author &#xff1a;lijunxuan* date &#xff1a;Created in 2019/7/11 17:14* description &#xff1a;* version: 1.0*/import io.jsonwebtoken.JwtBuilder; import io.jsonwebtoken.Jwts; import io.jsonweb…

MySQL SHELL 缓存历史命令

在正常情况下&#xff0c;我们在 MySQL SHELL 中输入的历史命令语句&#xff0c;通过上下箭头键可以向前向后查看&#xff0c;但是如果输入的语句中含有密码字段&#xff0c;那么这条命令语句不会被缓存到历史记录中。

java掌握_掌握Java 11的Constantdynamic

java掌握为了使JVM对动态语言更具吸引力&#xff0c;该平台的第七版已将invokedynamic引入了其指令集。 Java开发人员通常不会注意到此功能&#xff0c;因为该功能已隐藏在Java字节码中。 简而言之&#xff0c;通过使用invokedynamic &#xff0c;可以将方法调用的绑定延迟到第…

Mybatis动态代理模式实现CRUD

项目实现的功能 查询所有用户信息 通过Id查询用户信息 添加用户&#xff08;回显主键&#xff09; 修改用户信息 删除用户信息 通过用户名字模糊查询 一、引入依赖和工程结构 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http…

MySQL撤销(revoke)用户权限

文章目录撤销用户对某个数据库的全部权限撤销用户对某个数据库的部分权限撤销用户对某个数据库的某张表的部分权限撤销用户对任何数据库的任何表的部分权限撤销 WITH GRANT OPTION 权限权限表撤销权限的巨坑撤销语句要和授权语句完全一致权限 USAGE 是无法撤销的数据库 test 的…

无服务器–仅仅是构建现代应用程序的一种方法?

如果搜索“无服务器”&#xff0c;则会发现无服务器是构建现代应用程序的一种新的流行方式。 无服务器真的是新的吗&#xff1f; 无服务器是指您无需担心服务器的概念–无需置备&#xff0c;部署和维护服务器。 显然有服务器&#xff0c;但是您不必考虑或担心它们&#xff0c;…

Mybatis核心配置文件xml详解

<!-- configuration:在dtd约束中? 代表一次或零次 代表一次或多次&#xff08;最少一次&#xff0c;可以多次&#xff09;* 代表零次或多次&#xff08;有没有都可以&#xff09;, :逗号 特定的顺序&#xff08;&#xff09;| :竖杠 任选其一能添加的标签和顺序properties?…

MySQL查询语句后面加上“\G”,提示 ERROR: No query specified

在查询语句后面以 \G 结尾&#xff0c;表示纵向显示每行记录&#xff0c;如下所示&#xff1a; mysql> select * from student\G; *************************** 1. row ***************************id: 00000000000000000001name: liaowenxiongage: 22score: NULLbirthday:…

c++ 嵌套私有类_嵌套类和私有方法

c 嵌套私有类当您在另一个类中有一个类时&#xff0c;他们可以看到彼此的private方法。 在Java开发人员中并不为人所知。 面试过程中的许多候选人说&#xff0c; private是一种可见性&#xff0c;它使代码可以查看成员是否属于同一班级。 这实际上是对的&#xff0c;但更准确地…

Mybatis多参数封装到一个类中模糊查询

1.创建QueryValueObject实体类 package com.william.domain;import org.omg.PortableInterceptor.USER_EXCEPTION;/*** author &#xff1a;lijunxuan* date &#xff1a;Created in 2019/7/12 12:09* description &#xff1a;* version: 1.0*/ public class QueryValueObje…

MySQL数据库的权限表

文章目录user 表db 表tables_priv 表columns_priv表MySQL 数据库中与权限相关的表&#xff1a;user、db、tables_priv、columns_priv。 user 表 mysql> select * from mysql.user\G *************************** 1. row ***************************Host: localhostUser: …

jakarta ee_MicroProfile在Jakarta EE时代的作用

jakarta ee自创建以来&#xff0c;MicroProfile赢得了广泛的关注&#xff0c;并制定了各种规格。 最初&#xff0c;它的创建是为了在多个供应商的推动下&#xff0c;以更快的速度推进微服务世界的企业Java。 现在&#xff0c;随着在Eclipse Foundation下将Java EE转换为Jakarta…

Linux系统下MySQL数据库的超级管理员root的密码忘记/忘记密码怎么办?

文章目录方法一方法二方法三方法一 1.添加登录跳过权限检查配置 修改 /etc/my.cnf 文件&#xff0c;在 [mysqld] 配置节点添加 skip-grant-tables 配置 [mysqld] skip-grant-tables2.重新启动mysql服务 service mysqld restart3.修改密码 添加登录跳过权限检查配置后&#x…

Mybatis多参数封装到map中,多条件查询

1.UserMapper接口 package com.william.dao;import com.william.domain.QueryValueObject; import com.william.domain.User;import java.util.List;public interface UserMapper {/*** 多参数封装到map中&#xff0c;多条件查询* param map* return*/List<User> findBy…

jax-rs配置_具有MicroProfile配置的可配置JAX-RS ExceptionMapper

jax-rs配置当使用JAX-RS创建REST服务时&#xff0c;通常不返回任何内容&#xff08;例如HTTP 201/2/4等&#xff09;或某些数据&#xff08;可能采用JSON格式&#xff08;因此HTTP 200&#xff09;&#xff0c;或者返回某些异常/错误&#xff08;因此HTTP 4xx或5xx&#xff09;…

MySQL数据库修改用户登录密码的三种方式

文章目录一、更新 mysql.user 表二、用 set password 命令三、使用 mysqladmin 命令提醒&#xff1a;MYSQL5.7 版本后不再支持password()函数和password字段。 一、更新 mysql.user 表 mysql> use mysql; mysql> update user set passwordpassword(123456) where userr…

Mybatis多条件直接查询

1.UserMapper接口 package com.william.dao;import com.william.domain.QueryValueObject; import com.william.domain.User;import java.util.List;public interface UserMapper {/*** 根据多条件直接查询* param username* param sex* param startIndex* param pageSize* re…

java 正在验证应用程序_Java应用程序中的验证

java 正在验证应用程序我经常看到的项目几乎没有任何有意识的数据验证策略。 他们的团队在截止日期&#xff0c;明确要求的巨大压力下工作&#xff0c;只是没有足够的时间以适当且一致的方式进行验证。 因此&#xff0c;数据验证代码随处可见&#xff1a;JavaScript片段&#x…

Mybatis多条件直接查询Param注解版

1.UserMapper接口 package com.william.dao;import com.william.domain.QueryValueObject; import com.william.domain.User;import java.util.List;public interface UserMapper {/*** 多条件直接查询Param注解版* param username* param sex* param startIndex* param pageS…