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 19public 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 系统中只是让用户/开发者知道这个文件是什么类型的,后缀没有实际意义,区分文件一般是通过文件开头的内容或者块。

希望能帮到有需要的人~

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

  1. 怎样用java写一个简单的文件复制程序

    怎样用java写一个简单的文件复制程序 代码来源:https://jingyan.baidu.com/article/c35dbcb0d6f1398916fcbc07.html package Num ...

  2. Java写内容到本地文件

    Java程序写内容到本地文件,代码如下: 导包部分: import java.io.BufferedWriter; import java.io.File; import java.io.FileWr ...

  3. 如何写windbg高级脚本---以访问文件的windbg脚本为例说明

    最近需要在访问指定文件时中断下来,但不知道如何下断,在网上搜索了一番无果,只好自己摸索了.听大侠说windbg的条件断点功能异常强大,可以实现,不禁心痒,特尝试一番,顺便熟悉一下windbg的脚本语法 ...

  4. linux编写脚本读取txt文件,用bash脚本或者批处理 bat脚本 读取一个目录下.txt文件第一行内容存放到新文件a.txt...

    起因:我把cmd 控制台说成了dos! 发展:人类生气了,跟我扯了一堆 dos 还有什么玩意儿,在我第二次还说那个是dos界面以后:( 后续:人类要我写 批处理bat 还有linux bash 脚本去 ...

  5. 如何写sybase sql脚本文件_写一个删除lock文件的skill脚本

    Cadence软件使用过程中偶尔会遇到文件被lock的情况,这是Cadence软件对文件的一种保护措施,大部分情况都是对用户友好的,但是偶尔也会给用户带来困扰,给工作带来的一定的不便. 文件是如何被锁 ...

  6. 用java写猜拳游戏,Java写人机猜拳游戏(可扩展其他游戏或其他参与者)

    初学Java,写一个控制台输入输出的小游戏,模拟人机猜拳.为了扩展性稍微强一些,这个小游戏代码有些复杂,但确实可以扩展其他游戏或者其他参与者的. 代码还有一些小问题,后面贴出来... /******* ...

  7. 如何用JAVA写acm_用java来写ACM

    前言 从去年10月份开始就一直都在九度oj平台写acm,到今天在九度oj的总排名已经到了第6名,收获很多特别是算法和数据结构方面的提高,这种提高直接反映在我找工作的顺利中 但是人总要学会拥抱变化,特别 ...

  8. java写枪战游戏,Java版星球大战游戏(横向射击)

    Java版星球大战游戏(横向射击) 准备逐步整理一下手中的第三方Java游戏代码,将能用的部分融入到LGame里去,没有能用部分的就直接删掉. 但无论程式难易如何,也是原作者一番心血,不应将它们弃如敝 ...

  9. java写dnf_用java模拟dnf武器强化的过程

    几点说明:需要用户输入武器初始等级以及是否需要进行强化. 整个强化过程都包含在一个while循环里,利用标记i来停止循环,i==1继续强化:i==0为停止强化. 关于概率的问题,运用到随机数,r为0~ ...

  10. JAVA写代码学费,java编程培训班学费是多少

    JavaWeb 01HTML5入门 -HTML的作用 -全局标签 -绝对路径与相对路径 -常见标签 -字符集 -图片整合 -表单标签 -布局指定的网页 02CSS3入门 -css声明类型 -常见的各种 ...

最新文章

  1. 使用CSS3美化复选框checkbox
  2. 安卓系统底层C语言算法之测试参数是几个long型的算法
  3. 在EXCEL指定SHEET页,指定文字位置,插入批注
  4. 中国金刚石线行业“十四五规划”与未来产销需求预测报告2021-2027年
  5. 文件夹配置文件服务器,服务器文件夹配置文件
  6. 【COMA】一种将团队回报拆分为独立回报的多智能体算法
  7. 使用traits技术表现迭代器类型 iterator_category
  8. hdu 3746 kmp的next数组理解
  9. 数据库SQL Server DAC 导入导出数据到SQL Azure问题
  10. 在Latex如何添加Visio绘图
  11. AppScan 的安装+激活以及+漏扫dvwa,生成安全报告
  12. xgboost 中的二阶导数为什么收敛更快?
  13. 重装系统(超详细教程)----大白菜教程
  14. 【睡服】自动化面试官,就用2020年最全的自动化测试面试题及答案
  15. 【RTSP/RTP流媒体】10、编写简单的RTSP客户端
  16. STM32外部中断干扰解决方案
  17. 修改服务器连接数,服务器修改连接数
  18. rust高墙大门怎么造_rust自己建的高墙怎么拆 | 手游网游页游攻略大全
  19. 简单验证 姓名,身份证,手机号码
  20. 子域名爆破工具subDomainsBrute

热门文章

  1. tomcat安装运行和idea项目部署----详解
  2. 政府形象塑造_塑造业务应用程序架构的10大技术趋势
  3. android怎么判断程序进入了后台,Android 判断App是否进入后台
  4. 砸开百度与企业网生财(来自:alibaba商人论坛:侯伯斯 的帖子)
  5. Python运算符与表达式
  6. winform实现透明控件
  7. 怎么用计算机来弄音乐,手把手教你用电脑玩音乐之Ableton!(基础篇1)
  8. 淘宝网简易实现, Html + css + Javascript + Jquery +Swiper +Vue, 期末js大作业
  9. 【数据库】Py之lmdb:lmdb的简介、安装、使用方法之详细攻略
  10. 毫米波雷达与激光雷达探秘