如何使用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 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文件如何像脚本一样使用运行)相关推荐
- 怎样用java写一个简单的文件复制程序
怎样用java写一个简单的文件复制程序 代码来源:https://jingyan.baidu.com/article/c35dbcb0d6f1398916fcbc07.html package Num ...
- Java写内容到本地文件
Java程序写内容到本地文件,代码如下: 导包部分: import java.io.BufferedWriter; import java.io.File; import java.io.FileWr ...
- 如何写windbg高级脚本---以访问文件的windbg脚本为例说明
最近需要在访问指定文件时中断下来,但不知道如何下断,在网上搜索了一番无果,只好自己摸索了.听大侠说windbg的条件断点功能异常强大,可以实现,不禁心痒,特尝试一番,顺便熟悉一下windbg的脚本语法 ...
- linux编写脚本读取txt文件,用bash脚本或者批处理 bat脚本 读取一个目录下.txt文件第一行内容存放到新文件a.txt...
起因:我把cmd 控制台说成了dos! 发展:人类生气了,跟我扯了一堆 dos 还有什么玩意儿,在我第二次还说那个是dos界面以后:( 后续:人类要我写 批处理bat 还有linux bash 脚本去 ...
- 如何写sybase sql脚本文件_写一个删除lock文件的skill脚本
Cadence软件使用过程中偶尔会遇到文件被lock的情况,这是Cadence软件对文件的一种保护措施,大部分情况都是对用户友好的,但是偶尔也会给用户带来困扰,给工作带来的一定的不便. 文件是如何被锁 ...
- 用java写猜拳游戏,Java写人机猜拳游戏(可扩展其他游戏或其他参与者)
初学Java,写一个控制台输入输出的小游戏,模拟人机猜拳.为了扩展性稍微强一些,这个小游戏代码有些复杂,但确实可以扩展其他游戏或者其他参与者的. 代码还有一些小问题,后面贴出来... /******* ...
- 如何用JAVA写acm_用java来写ACM
前言 从去年10月份开始就一直都在九度oj平台写acm,到今天在九度oj的总排名已经到了第6名,收获很多特别是算法和数据结构方面的提高,这种提高直接反映在我找工作的顺利中 但是人总要学会拥抱变化,特别 ...
- java写枪战游戏,Java版星球大战游戏(横向射击)
Java版星球大战游戏(横向射击) 准备逐步整理一下手中的第三方Java游戏代码,将能用的部分融入到LGame里去,没有能用部分的就直接删掉. 但无论程式难易如何,也是原作者一番心血,不应将它们弃如敝 ...
- java写dnf_用java模拟dnf武器强化的过程
几点说明:需要用户输入武器初始等级以及是否需要进行强化. 整个强化过程都包含在一个while循环里,利用标记i来停止循环,i==1继续强化:i==0为停止强化. 关于概率的问题,运用到随机数,r为0~ ...
- JAVA写代码学费,java编程培训班学费是多少
JavaWeb 01HTML5入门 -HTML的作用 -全局标签 -绝对路径与相对路径 -常见标签 -字符集 -图片整合 -表单标签 -布局指定的网页 02CSS3入门 -css声明类型 -常见的各种 ...
最新文章
- 使用CSS3美化复选框checkbox
- 安卓系统底层C语言算法之测试参数是几个long型的算法
- 在EXCEL指定SHEET页,指定文字位置,插入批注
- 中国金刚石线行业“十四五规划”与未来产销需求预测报告2021-2027年
- 文件夹配置文件服务器,服务器文件夹配置文件
- 【COMA】一种将团队回报拆分为独立回报的多智能体算法
- 使用traits技术表现迭代器类型 iterator_category
- hdu 3746 kmp的next数组理解
- 数据库SQL Server DAC 导入导出数据到SQL Azure问题
- 在Latex如何添加Visio绘图
- AppScan 的安装+激活以及+漏扫dvwa,生成安全报告
- xgboost 中的二阶导数为什么收敛更快?
- 重装系统(超详细教程)----大白菜教程
- 【睡服】自动化面试官,就用2020年最全的自动化测试面试题及答案
- 【RTSP/RTP流媒体】10、编写简单的RTSP客户端
- STM32外部中断干扰解决方案
- 修改服务器连接数,服务器修改连接数
- rust高墙大门怎么造_rust自己建的高墙怎么拆 | 手游网游页游攻略大全
- 简单验证 姓名,身份证,手机号码
- 子域名爆破工具subDomainsBrute
热门文章
- tomcat安装运行和idea项目部署----详解
- 政府形象塑造_塑造业务应用程序架构的10大技术趋势
- android怎么判断程序进入了后台,Android 判断App是否进入后台
- 砸开百度与企业网生财(来自:alibaba商人论坛:侯伯斯 的帖子)
- Python运算符与表达式
- winform实现透明控件
- 怎么用计算机来弄音乐,手把手教你用电脑玩音乐之Ableton!(基础篇1)
- 淘宝网简易实现, Html + css + Javascript + Jquery +Swiper +Vue, 期末js大作业
- 【数据库】Py之lmdb:lmdb的简介、安装、使用方法之详细攻略
- 毫米波雷达与激光雷达探秘