如何使用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声明类型 -常见的各种 ...
最新文章
- 叱咤风云的BERT为何败于商业环境?
- 2019年,比特币现金爱好者线下见面会发展至6大洲30个国家
- 拆除指令怎么设置_快捷指令(16)朗读屏幕内容
- 征集企业非技术面试疑难问题
- 同时支持mp4/ogg/webm/flv格式的视频播放
- Rust: Rust Language Cheat Sheet,强烈推荐!
- 学生简单个人博客网页DW模板 简单HTML静态网页设计个人主页制作 大学生个人网站模板下载 网页作业个人主页制作
- NBSI1.15部分源代码
- aspose利用word模板生成word、PDF
- video标签隐藏右下角的三个点
- LidarSLAM(一):NDT
- java 和 c md5加密_Java与C++实现同样的MD5加密算法
- 【思维】Hzy's Rabbit Stick
- 用python画小猪佩奇代码_用python画个小猪佩奇(turtle示例源码)
- OpenCV:Scalar数据类型理解
- 京东推荐商品列表API接口-(item_recommend-获取推荐商品列表API接口),京东API接口
- 午夜00:37分,与蚊子相伴无眠之夜
- python中self image_Python3用tkinter和PIL实现看图工具
- 运载火箭弹道飞行程序matlab,运载火箭弹道与控制理论基础
- 解决Windows 7播放网页视频没有声音的问题