如何使用Java写“脚本”(单个Java文件如何像脚本一样使用运行)

Java 支持在类 Unix 系统上将单个 Java 源代码文件像脚本一样运行,但是和真正的脚本不一样,还是需要编译的。也就是说需要在 Linux、macOS、WSL 下运行,Windows PowerShell 或者命令行下不能用这种方法。

由于查了一下没有看到详细说明的文章,这里写一篇文章记录一下。下面详细说说如何编写 Java “脚本”。

首先是 Java 源文件不能使用.java后缀,要直接是文件名,例如HelloJava。这里使用 vim 新建一个名为“HelloJava”的文件:

vi HelloJava

然后在文件第一行像其他脚本一样添加说明和版本(为了方便多版本控制):

//Linux
#!/path/to/your/bin/java --source 16

//macOS
#!/usr/bin/java --source 19

如果不知道版本是多少,那么使用java -version查看。如下版本为 19:

$ java -version
java version "19.0.1" 2022-10-18
Java(TM) SE Runtime Environment (build 19.0.1+10-21)
Java HotSpot(TM) 64-Bit Server VM (build 19.0.1+10-21, mixed mode, sharing)

“脚本”内容如下:

#!/usr/bin/java --source 19
 
public class HelloJava {
 
    public static void main(String[] args) {
        System.out.println("Hello, world!");
    }
}

保存退出 vi 之后,需要调整权限,因为如果你没有调整过遮掩码,那一般新建文件都没有可执行权限,这样不能运行。调整权限很简单,如下:

chmod +x HelloJava

调整完权限之后,就可以像脚本一样运行了。如下:

$ ./HelloJava
Hello, world!

如果不想使用相对地址,并且存放位置固定,那么把目录添加到PATH环境变量即可,方法请移步:Linux——如何直接使用脚本(配置$PATH变量中包含的所有bin目录)。

不使用后缀我猜是 Java 为了区别源文件和“脚本文件”。再者说在类 Unix 系统中只是让用户/开发者知道这个文件是什么类型的,后缀没有实际意义,区分文件一般是通过文件开头的内容或者块。

希望能帮到有需要的人~

你可能感兴趣的:(Web,笔记,java,linux,unix)