首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么我能直接从bash执行JAR?

在云计算领域中,bash是一种常用的命令行解释器,而JAR(Java Archive)是Java平台上的一种压缩文件格式,用于存储Java类、资源文件和元数据。通过bash执行JAR文件可以实现直接运行Java程序的目的。

为什么能直接从bash执行JAR文件呢?这是因为JAR文件本质上是一种可执行文件,其中包含了Java字节码,而Java虚拟机(JVM)可以解释执行这些字节码。当我们在bash中执行JAR文件时,实际上是通过调用Java虚拟机来执行JAR文件中的Java程序。

执行JAR文件的步骤如下:

  1. 首先,确保系统中已经安装了Java开发环境(JDK)。
  2. 打开终端或命令行界面,进入JAR文件所在的目录。
  3. 使用bash命令执行JAR文件,命令格式为:java -jar <JAR文件名>.jar
    • -jar参数告诉Java虚拟机要执行的是一个JAR文件。
    • <JAR文件名>.jar是要执行的JAR文件的文件名。

执行JAR文件的优势:

  1. 跨平台性:由于Java虚拟机的存在,JAR文件可以在不同操作系统上运行,无需针对不同平台进行重新编译。
  2. 打包便捷:JAR文件可以将多个Java类、资源文件和元数据打包成一个文件,方便分发和部署。
  3. 版本管理:JAR文件可以通过版本号进行管理,便于升级和回滚。
  4. 模块化开发:JAR文件可以作为模块进行开发,不同模块之间可以相互引用和依赖。

JAR文件的应用场景:

  1. Java应用程序的发布和部署:将Java应用程序打包成JAR文件,方便在不同环境中进行部署和运行。
  2. Java库和框架的分发:将Java库和框架打包成JAR文件,供其他开发者引用和使用。
  3. 自动化脚本的编写:通过在JAR文件中编写Java代码,可以实现各种自动化任务,如数据处理、文件操作等。

腾讯云相关产品和产品介绍链接地址:

请注意,以上仅为腾讯云的一些相关产品,其他厂商的云计算产品也提供类似的功能和服务。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

linux使用 source etcprofile

权限下启动arths 是监控不到他的Java进程的,于是切换root权限,再启动arthas,但是此时使用java -jar命令没有生效。...为什么没有在使用source /etc/profile 命令前使用java命令不能生效呢? 当时的第一反应是root权限下没有安装jdk?...在当前bash环境下读取并执行FileName中的命令。 *注:该命令通常用命令“.”来替代。 source命令( C Shell 而来)是bash shell的内置命令。...例如,假如在登录后对 .bash_profile 中的 EDITER 和 TERM 变量做了修改,则能够用source命令重新执行 .bash_profile 中的命令而不用注销并重新登录。...对执行顺序有要求的命令保证一旦有错误发生,下面的命令不会盲目地继续执行

3.1K10
  • Java 应用容器化最佳实践

    -${VERSION}-SNAPSHOT.jar Bash-c 方式 除了直接执行和 exec 方式其实还有一个称之为 “不稳定” 的解决方案, 就是使用 bash -c 来执行命令; 在使用 bash...CMD 执行可以接受信号转发实现优雅关闭 4、复杂命令在脚本内进行 exec 执行也可以接受信号转发实现优雅关闭 5、直接使用 bash -c 运行在简单命令执行时也可以优雅关闭, 但需要实际测试来确定准确性...OpenJDK 11.0.16 可能很多人会好奇, 都测试了 11.0.15 为什么还要测试 11.0.16?...-XX:+UseContainerSupport, 该参数 OpenJDK 10 反向合并而来; 尝试使用这个参数来进行测试, 结果仍然是没什么卵用: OpenJDK 11+ 11+ 版本开始...Native 编译 Native 编译优化是指通过 GraalVM 将 Java 代码编译为可以直接被平台执行的二进制文件, 编译后的可执行文件运行速度会有极大提升.

    2.1K30

    GraalVM 加持 Java 容器化,速度起飞!

    -${VERSION}-SNAPSHOT.jar Bash-c 方式 除了直接执行和 exec 方式其实还有一个称之为 “不稳定” 的解决方案, 就是使用 bash -c 来执行命令; 在使用 bash...CMD 执行可以接受信号转发实现优雅关闭 4、复杂命令在脚本内进行 exec 执行也可以接受信号转发实现优雅关闭 5、直接使用 bash -c 运行在简单命令执行时也可以优雅关闭, 但需要实际测试来确定准确性... -XX:+UseContainerSupport, 该参数 OpenJDK 10 反向合并而来; 尝试使用这个参数来进行测试, 结果仍然是没什么卵用: OpenJDK 11+ 11+ 版本开始...Native 编译 Native 编译优化是指通过 GraalVM 将 Java 代码编译为可以直接被平台执行的二进制文件, 编译后的可执行文件运行速度会有极大提升. ...普通开发到架构师、再到合伙人。一路过来,给我最深的感受就是一定要不断学习并关注前沿。只要你坚持下来,多思考、少抱怨、勤动手,就很容易实现弯道超车!所以,不要问我现在干什么是否来得及。

    1.1K40

    Java 核心类库一览

    打开环境配置文件(的是 macOS 系统),使用命令vi ~/.bash_profile 在 CLASSPATH 后边追加 ab.jar 所在的路径,然后 source ~/.bash_profile...dt.jar dt 是 DesignTime 的缩写,翻译过来就是设计时。 为什么叫设计时呢?...这是因为它们实际上只是一层代码的封装,这些工具的实现所要用到的类库都在 tools.jar 中。 观察 tools.jar ,我们会发现很多文件和 bin 目录下的可执行文件是有相对性的。...rt.jar 是运行时环境的类库,当你编写程序用到很多系统类,比如 String,System 这些类,其实都来自这个类库。JVM 在运行时 rt.jar 访问所有这些类。...那你就不需要自己编写代码,直接的类拿来用就可以。但我又不想让别人看到内部实现,想要保护版权,怎么办呢?

    1.1K10

    用docker部署jar包_docker run 参数

    大家好,又见面了,是你们的朋友全栈君。 我们构建的是运行bash文件命令的镜像,而不是构建jar包的镜像。好处就是,jar包有更新,只需替换jar包或者bash文件,而无须重新构建镜像。...一、思路 1、将docker容器中的指定文件夹挂载到宿主机上,更新jar包只需上传到宿主机指定路径,方便更新 2、利用bash文件运行jar包,并构建该bash的镜像,代替构建直接运行jar包的镜像,利于镜像与...包的对外端口 最后一句,有网上教程写的是 CMD [“sh”,“-c”,“/usr/data/hello.sh”],但不知道为什么这样写的话,容器运行后会提示没有权限!...六、补充 如上所述,的思路是将容器内的文件夹挂载到宿主机的文件夹上,方便以后更新维护。如果没有这层考虑,其实也可以将jar直接塞到容器里运行,不过一旦jar包有更新,需要重新构建镜像和容器。...直接塞到容器里运行的方法是Dockerfile内容稍有点不同: FROM java:8 MAINTAINER chenqu ADD demo-0.0.1-SNAPSHOT.jar demo.jar EXPOSE

    1.8K20

    使用jenkins连接linux部署jar

    点击全局工具配置,如下图: 新增jdk 点击新增jdk,选择jdk 8,这里因为是 java.sun.com下载,所以需要一个oracle的账户,这里已经输入完了,所以下图未显示输入oracle的地方...然后,创建一个自由风格的任务,如下图: 为了运行我们的jar包,我们需要把发布好的jar包,上传到linux的/soft/app-kiba-spring-kafka/,然后创建一个startup.sh...然后回到主页面执行构建,如下图: 点击执行。尝试运行一下。 执行时遇到一个错误,错误提示:ERROR: Failed to install JDK. Exit code=2。...这个java版本我们不用关心,因为这个java版本是jenkins的所在docker容器的java版本,只要让jenkins通过这个jdk执行命令即可,实际我们的jar运行容器或者服务器,有自己的java...当然,jenkins还能实现更多功能,比如他可以使用git插件,直接下载源码,然后使用maven插件进行打包,然后再执行的这个命令,完成发布。

    30810

    macOS(Big Sur):eclipse下引用JDK 8 tools.jar 塈在macOS下为eclipse设置JAVA_HOME环境变量问题

    以下为的项目中关于引用JDK下tools.jar的pom.xml片段,在windows,Linux下都工作正常,最近换到MacOS 11(Big Sur)下工作,命令行执行编译没有问题,但在eclipse.../lib/tools.jar 直接的原因就是找不到{java.home}/lib/tools.jar...事实上确实在.zprofile中已经添加了JAVA_HOME定义。按道理不应该呀。为什么?对于我这个macOS的手新来说太不可理解了。...macOS 10以后默认的脚本解释器是zsh,不再是bash,所以这里不是修改.bash_profile 在google上一通找,下面这两篇文章让基本搞明白了原因: 《Setting environment...zprofile,.zshrc或.bash_profile,.bashrc读取环境变量的。

    3.2K30

    springboot服务优雅关机脚本

    /bin/bash -e java -jar pay-server.jar --spring.profiles.active=prd > pafa.log 2>&1 & 在网上找到的关机脚本基本上都长成下面这个样.../bin/bash -e ps -ef | grep pay-server.jar | grep -v grep | cut -c 9-15 | xargs kill -s 9 可以看到在命令最后加上了个参数...-s 9 在 kill 命令中 -9 是强制kill的意思,不管服务有没有正在运行的进程,它都会直接杀掉进场。.../bin/bash -e ps -ef | grep pay-server.jar | grep -v grep if [$?......" fi 然后可以将这个脚本放在系统的定时任务里执行,关于定时任务的用法可以查看cron命令 注意:如果用定时任务时,在被执行的脚本里如果有通过export导入的命令的话,就要写上全路径,因为在系统启动的时候

    60220

    Docker下redis与springboot三部曲之一:极速体验

    ,所以代码的细节先不讨论,jar已准备好,以下两个地址均可下载: http://download.csdn.net/download/boling_cavalry/10192604 https://.../work/share目录,这个目录和容器的/usr/Downloads是映射关系,所以我们进入容器后可以直接访问这个文件; 部署jar执行以下命令进入运行springboot容器: docker...exec -it springbootredis_java_1 /bin/bash 进入/usr/Downloads目录,可以看到文件:redistempletedemo-0.0.1-SNAPSHOT.jar...执行以下命令启动容器: java -jar redistempletedemo-0.0.1-SNAPSHOT.jar 启动成功,信息如下: 验证 的电脑地址是192.168.119.155,所以在浏览器上输入...redis容器: docker exec -it springbootredis_redis_1 /bin/bash 执行以下命令进入redis控制台: redis-cli 在控制台执行get name

    24720

    arthas入门

    math-game.jar 然后再执行 curl -O https://arthas.aliyun.com/arthas-boot.jar java -jar arthas-boot.jar 然后问题来了...找不到java进程,可我明明已经启动,它提示使用jps寻找java进程 执行jps,提示bash: jps: command not found 仔细看,这里是JAVA_HOME: C:\Program...而是jre 修改了环境变量(关掉bash窗口后)再次执行jps后发现没有jps: command not found的报错了 但是仍然没有找到我想要的java进程,并且执行java -jar arthas-boot.jar...后发现仍然是提示Please select an available pid.而没有让选 将所有bash全部使用管理员身份打开,再次执行,终于成功!...primeFactors returnObj 然后按ctrl+c退出,结果直接退出了arthas 再次运行java -jar arthas-boot.jar提示已经存在 一般我们遇到这种情况直接使用

    1.8K20

    在 Nebula K8s 集群中使用 nebula-spark-connector 和 nebula-algorithm

    那么,为什么这么简单的过程却值得一篇文章呢? 配置信息容易忽略的问题 刚才我们讲了具体的实际操作,但当中有一些理论小知识在这里: a....MetaD 隐含地需要保证 StorageD 的地址被 Spark 环境访问; b. StorageD 地址是 MetaD 获取的; c....那么问题来了,为什么需要且只要 MetaD 的地址呢?...去获取 StorageD 的地址,且这个地址是服务发现而得,所以 nebula-spark-connector 实际上获取的 StorageD 地址就是上边的这种 headless 的服务地址,没法直接外部访问...实际上,在努力推进 Nebula Spark 社区去支持可以配置的 StorageAddresses 选项,有了它之后,前边提到的 2. 就是不必要的了。

    51430

    原生AspectJ用法分析以及Spring-AOP原理分析

    当然,吐槽了这么多其实并不是想标新立异,只是想找一个写文章的理由。虽然某种方面讲,可能也算是"茴香豆的X种写法",但是既然自己乐在其中,那么开心就好喽。...为什么用AspectJ 为什么用AspectJ,的理解是两个字"方便"。...├── aspectjweaver.jar └── org.aspectj.matcher.jar 当然,这些jar包并不总是需要从官网下载,很多情况下在maven等中心库中直接找会更方便。...使用的方法大概有这几种: 调用命令直接编译(直接使用ajc命令或者调用java -jar aspectjtools.jar) 使用IDE集成的ajc编译器编译 使用自动化构建工具的插件编译 其实2,3两点的本质都是使用...运行(在项目根目录执行): $ java -cp ~/.m2/repository/org/aspectj/aspectjrt/1.8.9/aspectjrt-1.8.9.jar:src/main/java

    2.3K20

    Mac maven环境变量配置

    当前环境是sh shell 把要加入的环境变量加入到你主文件夹以下的.profile或者.bash_profile。假设没有生成一个。...又细致看了下面错误:Failed to parse pluginmaven-resources-plugin-2.5.jar 认为是maven-resources-plugin-2.5.jar这个jar...,当前的三个plugin的包 2.4.3 2.5 2.5.1 由于maven-resources-plugin-2.5.jar报错,所以直接干掉这个文件 rm -f maven-resources-plugin...-2.5.jar 后来寻思一下,干脆直接remove folder 2.5 rm -rf 2.5 回到Eclipse,又一次maven install,这时候查看文件夹,会发现又一次生成了2.5这个文件夹和里面的所有数据...结束语:至于为什么有2.4.3 2.5.1版本号在那。Eclipse为啥仅仅认准这个2.5了。想应该是Eclipse的maven插件配置问题, 当前用是Java版本号。

    2.1K10

    Weblogic渗透测试指南

    这样就可以顺利登录到网站后台了,然后就是部署一个包含自己马的war包(没有jsp马的默默问大佬要了个马 linux下可以直接用命令打包war包 1 jar -cvf [war包名] [目录名] ?...启动一个JRMP Server,[listen port] 为监听的端口 [ommand]为想要执行的命令 java -cp ysoserial-0.0.6-SNAPSHOT-BETA-all.jar...复现的时候有几个小问题,JRMP Server的ip需要填本地主网卡(用于上网的那个)的ip 然后在物理机上攻击虚拟机中映射出来的docker环境不知道为什么没有成功 以及自己在虚拟机上搭建的weblogic10.3.6..."要执行的指令" java -cp ysoserial-0.0.6-SNAPSHOT-BETA-all.jar ysoserial.exploit.JRMPListener 8888 Commonollections1...C#入门到入土全套教学 https://pan.baidu.com/s/1D3pvm4U1F3IsJfydHz-3hA 提取密码:uq94 来源:kingkk博客

    1.8K40
    领券