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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值