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

为什么Java程序在删除可执行文件.jar后还能继续运行?

Java程序在删除可执行文件.jar后仍然能继续运行的原因是因为Java程序在运行时是通过Java虚拟机(JVM)来执行的,而不是直接依赖于可执行文件本身。

当我们运行一个Java程序时,首先会将源代码编译成字节码文件(.class文件),然后通过Java虚拟机来解释执行这些字节码文件。可执行文件.jar实际上是一个压缩文件,包含了编译后的字节码文件以及其他资源文件。

一旦Java程序被编译成字节码文件后,它就不再依赖于源代码或可执行文件本身。因此,即使删除了可执行文件.jar,只要字节码文件仍然存在,Java虚拟机仍然可以加载并执行这些字节码文件。

这种设计使得Java程序具有跨平台的特性,因为Java虚拟机是在不同操作系统上运行的,它负责解释执行字节码文件,使得Java程序可以在不同的操作系统上运行。

总结起来,Java程序在删除可执行文件.jar后仍然能继续运行的原因是因为它依赖于编译后的字节码文件,而不是可执行文件本身。这也是Java跨平台的特性之一。

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

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

相关·内容

Pycharm程序运行完成,查看每个变量并继续对变量进行操作的方法(show variables)

但pycharm和MATLAB变量交互上的形式不同,有时候为了观察变量的取值是否正确,还要到处print~~,麻烦不说还特别低效!!那么,pytharm能不能像MATLAB一样显示中间变量的值呢?...为什么不直接debug?...从我个人角度来说,我觉得对比debug,这样做的优势有如下几点: debug会导致程序运行慢,特别是配置低的电脑会明显感受到; 有时我并不关心程序的中间变量具体是什么,我关心的是运行结束,我依然可以对程序的所有变量进行操作...,这样做可以同时获得程序本身运行的结果又可以获得Jupyter Notebook的交互计算体验;如下,我还想进一步探究OCR识别的结果,那么我程序运行完之后,依然可以进行操作: 具体软件环境如下:...2.上述操作只是针对一个文件,如果每个文件都想有类似的操作,可以点击生成Templates,后面运行.py文件便都会保存所有的变量: 发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn

1.7K20

第1章Hello world 45:对比RustJavaC++创建和运行Hello world全过程:运行第一个程序

讲动人的故事,写懂人的代码1.7 对比Rust/Java/C++创建和运行Hello world全过程有了会听懂人类的讲话,还能做记录的编程助理艾极思,他们三人的讨论内容,都可以变成一份详细的会议纪要啦...--config Release运行发布程序直接运行可执行文件java -jar app/build/libs/app.jar直接运行可执行文件直接运行可执行文件直接运行可执行文件清除所有构建输出文件.../gradlew clean直接删除build文件夹直接删除build文件夹直接删除build文件夹这张表格将带你了解不同编程语言和操作系统上创建并运行Hello world程序的简要步骤。...Java:使用./gradlew build,app/build文件夹中构建jar包。...运行发布程序:Rust、C++:直接运行可执行文件,享受我们的成果吧!Java:使用java -jar app/build/libs/app.jar,享受我们的Java项目吧!

15353

【IntelliJ IDEA】使用 exe4j 生成 jre + jar 可执行文件并在 Windows 上执行 ( 不安装 jre 执行 java 程序 )

C/C++ 程序 , 程序中 , 执行 system 系统调用 , 调用 jre 目录下的 java 命令 , 执行 jar 文件 , 也可以自己实现 ; 参考 【C 语言】System 系统调用...四、使用 exe4j 生成 jre + jar 可执行文件 ---- 运行的欢迎页 " 1. Welcom " , 不进行任何操作 , 选择 " Next " 按钮 , " 2...., 随便输入个字符串即可 ; " Output directory " 设置的是输出路径 , 设置完 , 继续后续设置 , 生成的程序类型 " Executable type " , 如果只是 Java...命令行程序 , 选择 Console application , 如果是 Java Swing 程序 , 选择 GUI application , " Executable name " 是生成的可执行文件名称...使用的是 1.8 版本编译的 jar 包 , 这里必须设置最低版本 1.8 ; " Search sequence " 中的 JRE 查找路径 , 全部删除 , 如果其它电脑的环境变量 , 配置路径不一样

1.8K20

Java JDK 环境搭建

当我们没有配置 jdk 的环境变量时, jdk/bin 目录外是运行不了 javac.exe (java 编译器) 和 java.exe (java 解释器) 的。...当然我们也可以去 jdk/bin 目录下运行 java 程序,但问题是 bin 目录下通过启动 javac.exe 把一个 .java 文件编译成 .class 文件,这个 .class 文件就直接生成...中设置了 JDK 的安装目录就不用再把 java 文件的完整路径写出来了,它会自动去 path 中设置的路径中去找; CLASSPATH 的作用:classpath 是指定你程序中所使用的类(.class...而 CLASSPATH 是用来告诉编辑器在那里寻找 Java 编译过程中所需的包和类所以其路径中配置的是 lib 目录下的 dt.jar 和 tools.jar; 为什么没有配置 CLASSPATH 变量...注意:如果使用 1.5 以上版本的 JDK,不用设置 CLASSPATH 环境变量,也可以正常编译和运行 Java 程序

44520

(译)自己的 Kubernetes 控制器(3)—改进和部署

第二篇使用 Java 实现了一个控制器。这一篇会讲讲如何部署控制器,以及如何对控制器进行改进。 集群内外 第一篇中提到过,控制器集群内外都能运行,只要能够完成必要的通信过程就可以。...由于自适应编译的代码需要时间,所以启动的一段时间内,性能都不会符合要求。这也是为什么 JVM 上的性能指标总是要在较长的预热时间再进行测量的原因。...Graal VM 能帮助你: 把应用打包成单一的 JARJAR 创建原生可执行文件 把原生可执行文件进行容器化 不幸的是,Jib 没有 GraalVM 的配置。...不同状况之中,有不同的方法来解决这个问题。这些都将在以后的帖子中介绍:现在我们先来关注一下反射。 Java 中,一些底层代码或多或少依赖于基于运行时的反射。...最后我们 Kubernetes 集群上运行了新开发的 Java 控制器。后续我们引入 Graal VM 创建了一个原生可执行文件

91020

【开发环境】JRE 裁剪 ① ( 裁剪 bin 目录下的 dll 动态库文件 )

download.csdn.net/download/han1202012/87388400 一、JRE 裁剪 ---- 【IntelliJ IDEA】使用 exe4j 生成 jre + jar 可执行文件并在...Windows 上执行 ( 不安装 jre 执行 java 程序 ) 博客中介绍了使用 exe4j 工具将 Java 程序封装成了可以 Windows 中执行的 exe 程序 ; 封装完成 , 大小..., 最下方可以看到 该进程 运行时 用到的 dll 动态库 ; 最后 , 进入 jre 的 bin 目录 , 点击 " 名称 " , 将文件按照名称排序 ; 开始尝试依次删除文件 , 然后测试程序是否还可以正常运行...\JreCutter\jre_32\bin\java.dll 文件 , 删除 fontmanager.dll 位置到该文件之间的所有 dll 文件 ; 删除 8 个文件 , 程序仍然正常运行 ; 注意...; 删除 3 个文件 , 程序仍然正常运行 ; 注意 , exe 文件不要随便删除 ; 删除完毕剩下这些文件 : JRE 只剩下 111MB ;

64220

如何在CentOS 7上安装WildFly 14

WildFly是一个最先进的Java Web应用程序服务器,围绕速度和轻量级设计。 WildFly以前称为JBoss,是开源的,旨在提供最快的Java运行时环境。...Server VM 18.3 (build 10.0.2+13, mixed mode) 完成此操作,您将需要设置环境变量以与Java可执行文件的位置相对应。...确保将文件权限更改为正确的值: sudo chmod 755 /etc/profile.d/java.sh sudo chmod 755 /etc/profile.d/java.csh 我们现在可以继续安装...您可以使用下一个命令将其解压缩: tar -zxvf wildfly-14.0.1.Final.tar.gz (您现在可以删除下载的包文件) 您现在需要设置独立配置文件中找到的两个变量,位于“/opt...只需运行可执行文件: sudo /opt/wildfly-14.0.1.Final/bin/standalone.sh 现在,虽然这个可执行文件可以很好地运行服务器,但它也会在你的终端会话中运行,这意味着当你的会话结束时

78010

第一阶段-Java基础知识:【第一章 DOS命令与开发环境的配置 + 第一个程序HelloWorld】

简单的理解就是:cmd中输入一些“特定”的代码 系统中的一些目录、文件等进行操作(运行、关闭、删除、移动、创建等等) 我们首先来了解一些学习Java中常用到的Dos命令 Dos命令 功能 d: 回车...安装结束,我们cmd中输入java这个命令,如果返回如下内容,即安装成功 ?...第二步:配置环境变量 我们想要在cmd中使用命令运行任何程序的时候 都需要告诉系统,我们要执行的程序所在的位置,例如我们想要编译 D:\develeop目录下的 HelloWorld.java代码 我们需要在...但是问题又来了,为什么 我输入javac HelloWorld.java 会提示 ‘javac’不是内部或者外部命令呢,也不是可运行程序,或批处理文件。 系统:我也一脸蒙圈 ?...;%Java_Home%\bin;%Java_Home%\lib\dt.jar; %Java_Home%\lib\tools.jar 好了,我们来测试一下我们的HelloWorld程序 我们成功控制台中输出了一句

78920

java环境变量及Eclipse自动编译问题

例如Windows和DOS操作系统中的path环境变量,当要求系统运行一个程序而没有告诉它程序所在的完整路径时,系统除了在当前目录下面寻找此程序外,还应到path中指定的路径去找。...;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar 解释语:dt.jar是关于运行环境的类库,主要是swing的包在用到swing时最好加上...tools.jar工具类库(编译和运行等),它跟我们程序中用到的基础类库没有关系。...作用是指定命令搜索路径,命令行下面执行命令如javac编译java程序时,它会到PATH变量所指定的路径中查找看是否能找到相应的命令程序。...我们需要把jdk安装目录下的bin目录增加到现有的PATH变量中,bin目录中包含经常要用到的可执行文件如javac/java/javadoc等待,设置好PATH变量,就可以在任何目录下执行javac

54510

1.1jdk的安装

JRE(Java Run )就是在运行java应用程序时提供支持的环境。 JRE一些操作系统中已经预装了,但是JDK却并不一定有安装,毕竟不是个个都是java开发人员。...第四步:最后安装结束界面的按钮是【继续】,点击进入到JavaFxSDK的设置界面,直接点击取消即可,JDK安装结束 第五步:安装好,直接右击【我的电脑】--【属性】,弹出的对话框中选择【高级系统设置...三、jdk目录介绍 这小节我们介绍一下作为Java开发人员必须要知道的,JDK 安装目录下的一些重要的文件和目录: bin目录:JDK中一些用于java开发的一些可执行文件。...dt.jar: DesignTime (设计时档案文件),主要是集成开发环境用于展示控件和让开发 人员设计应用程序是定义这些控件。...include目录:c语言的头文件,用于支持java原生接口和java虚拟机调试接口的一些原生代码程序。 jre目录:存放Java运行时环境的根文目录,这个运行时环境是java包的一个实现。

72150

Java反编译工具JD-GUI以及Eclipse的反编译插件

什么是反编译 高级语言源程序经过编译变成可执行文件,反编译就是逆过程。但是通常不能把可执行文件变成高级语言源代码,只能转换成汇编程序。...反编译是一个复杂的过程,所以越是高级语言,就越难于反编译,但目前还是有许许多多的反编译软件:通过对他人软件的目标程序(可执行程序)进行“逆向分析、研究”工作,以推导出他人的软件产品所使用的思路、原理、结构...、算法、处理过程、运行方法等设计要素,作为自己开发软件时的参考,或者直接用于自己的软件产品中。...,也可以直接下载JAR包,然后用java -jar进行运行,如下: 1 java -jar jd-gui-1.4.0.jar 安装Eclipse的反编译插件 jd-eclipse jd-guiEclipse...不过安装插件Eclipse可能继续使用着默认的class查看器,我们可以把它改成我们新安装的jd查看器: Window -> Preference -> General -> Editors -> File

2.3K10

王炸!!Spring 终于对 JVM 动手了…

现在你知道为什么 Spring Native 启动那么快的原因了!...Spring Native 正是通过 GraalVM 提供了对传统 Spring 应用程序的轻量级运行方式,不用修改任何传统应用程序代码的情况下,通过集成 Spring Native 项目就能轻松实现... IDEA 插件中运行: 配置好开始构建: 会看到大量这样的错误,不用理会,这个会在未来移除。 最终构建完成,一个简单的 Spring Boot 应用程序,这个构建却过程花了我 4 分钟。。...另外, target 目录中也生成了可执行的 jar 包: 然后我们用传统 JVM 环境来运行下: java -jar spring-boot-native-1.0.jar 启动时间:1.903 秒,...另外,目前 Spring Native 还处于 Beta 测试版本,现阶段肯定还会存在很多问题,未来可能也还会有变更,不过我会继续关注的,后续我也会更新更多 Java 系列最新技术实战文章,公众号Java

69440

【小工具】反编译指南

‍‍1 什么是编译和反编译 相信大学学习过编译原理这门课程的小伙伴都看过这段话,“编译的主要的目的是将便于人编写、阅读、维护的高级语言所写作的源代码程序,翻译为计算机能解读、运行的低级语言的程序,也就是可执行文件...2 常用的反编译工具 jd-gui:将打成jar包的class文件转化成的java文件,即源码文件。 dex2jar:将dex文件转换为class文件,然后class文件打成jar包。...注:dex文件是Android系统的可执行文件,包含应用程序的全部操作指令以及运行时数据。当java程序编译成class,还需要使用dex工具将所有的class文件整合到一个dex文件。...可直接将jar包直接拖拽到jd-gui页面,即可查看反编译的源代码。...3 总结 为什么需要反编译呢?假设被人给我们提供一个jar包或者apk包,我们可以通过反编译查看其源代码来分析代码或者定位问题。

2.5K20

SpringBoot2.x基础篇:Linux后台运行Jar以及Jvm参数调优

知识改变命运,撸码使我快乐,2020继续游走在开源界 点赞再看,养成习惯 给我来个Star吧,点击了解下基于SpringBoot的组件化接口服务落地解决方案 我们将编写的应用程序打包为Jar...可执行文件,如果在Linux服务器环境下,可直接使用java -jar xxx.jar命令运行应用程序,不过当我们关闭命令窗口启动中的应用程序也会停止,那我们需要通过什么方式才可以成为后台服务方式运行呢...-0.0.1-SNAPSHOT.jar & [1] 2349 appending output to nohup.out 我们通过以上的命令执行可以看到控制台输出了本次运行程序的PID为 2349,我们可以使用...注意事项:appending output to nohup.out这句话很有必要了解下,要知道我们之前通过java -jar xxx.jar直接运行应用程序时会有运行日志输出到控制台的,我们通过nohup...boot-jar.sh命令修改权限为可执行文件

1.6K30

系统的环境变量path的作用是什么

作用是指定命令搜索路径,i命令行下面执行命令如javac编译java程序时,它会到PATH变量所指定的路径中查找看是否能找到相应的命令程序。...我们需要把jdk安装目录下的bin目录增加到现有的PATH变量中,bin目录中包含经常要用到的可执行文件如javac/java/javadoc等待,设置好PATH变量,就可以在任何目录下执行javac...我们需要把jdk安装目录下的lib子目录中的dt.jar和tools.jar设置到CLASSPATH中,当然,当前目录“.”也必须加入到该变量中。   3. JAVA_HOME环境变量。...接着C:/Documents and Settings/vivi>下输入 javac D:/java HelloWord.java 马上出现错误信息 说什么 “javac不是内部或外部命令,也不是可运行程序活批处理文件...可以同时设置多个,设置的时候以分号隔开。当时我就不懂path那里把里面原有的变量全部删除只留一个 Java的。

7.6K20

Java官方笔记1编写运行Java程序

编译和执行 我们文本文件中编写英文代码,这些英文计算机是看不懂的,因此需要做一下转换,转换为计算机能识别和运行的格式,这个转换,是由编译器来完成的。有些语言没有编译器,但是Java是有的。...编译器转换的文件,通常叫做二进制文件,或者可执行文件。文件内容从英文变成了字节码。字节码只有计算机能看懂,人是看不懂的,我们也不用关心,只需要保证我们编写的英文代码,能正确通过编译即可。...Java代码文件以.java结尾,Java可执行文件以.class结尾。...所谓的JRE,Java Runtime Environment,它是JDK的一部分,只能用来运行Java程序,不能用来编译。...(to execute a jar file) 复杂应用开发时,并不会直接使用javac和java命令,而是使用IDE,Integrated Development Environment,集成开发环境

1K20

【开发环境】Android 命令行中执行 Java 程序 ( IntelliJ IDEA 中创建 Java Kotlin 工程 | dx 打包 DEX 字节码文件 | dalvikvm 命令 )

文章目录 前言 一、IntelliJ IDEA 中创建 Java / Kotlin 工程 二、准备 Java 和 Kotlin 代码 三、编译 PC 上可执行的 Java / Kotlin JAR 包..." 子项目 , 弹出 " Create JAR from Modules " 对话框 , 点击 " Main Class " 右侧的文件夹按钮 , Java 可执行程序的 META-INF/MANIFEST.MF..., 在打包 Kotlin 程序可执行文件 , Kotlin 可执行程序的 META-INF/MANIFEST.MF 文件保存在 D:\002_Project\003_Java_Work\workspace...Artifact ; 编译完成的可执行 JAR 文件 , 就在 D:\002_Project\003_Java_Work\workspace\AndroidShell\out\artifacts 目录下...; 注意 : Kotlin 代码编译的字节码文件 , 不能运行 ; 将 Java 可执行程序 , 打包到 DEX 文件中 ; dx --dex --output java.dex Main.class

65310

打包java程序(下)

上一次说了怎么把java程序打包成jar,但是Windows下,可执行程序一般是exe格式。...安装JRE,系统自动将.jar文件关联到了JRE上(javaw.exe),所以双击jar似乎是执行了可执行文件,其实只是使用了java模拟器来运行你写的代码。...我们把jar打包成exe,其实仍然是使用java虚拟机运行,只是加了个exe的外壳,如果少了JRE还是没法让程序启动的。     这里把jar制作成exe很方便,使用一款叫exe4j的软件。...你看自己电脑里安装的JRE是什么版本,或者你使用自己简化的JRE(Prefered VM中删除掉原有的选项,添加你简化的JRE目录)。 ?     6.之后的选项基本上就是默认即可。...最后,我们得到了一个exe文件,点击会弹出一个MessageBox,告诉你exe是exe4j打包的(很讨厌),之后才会运行程序

1.4K10

heapdump.phd分析工具_dump文件分析工具

运行环境 1.运行环境要求JDK 1.6或以上 如果JDK版本过低,报错如下: Exception in thread “main” java.lang.NoClassDefFoundError: java.../util/regex/PatternSyntaxException 2.运行需要足够大的内存 Heapdump文件一般比较大,打开耗时较长,推荐配置比较好的机器上进行堆栈分析,这样-Xmx设置大一点...运行ha396.jar文件,可执行文件run.bat/run.sh中配置环境变量 java -jar -Xmx3000m ha396.jar 执行打开IBM HeapAnalyzer图形化界面,导入...也可以通过命令行的方式直接打开heapdump文件: java -Xmx3000m -jar ha396.jar heapdump.20120503.170018.1510.0003.phd 其中,Xmx3000m...如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除

1.9K20

弄懂 JRE、JDK、JVM 之间的区别与联系

其实很多 Java 程序写了很多代码,你问他 jre 和 jdk 之间有什么关系,jvm 又是什么东西,很多人不知所云。... jdk 的 bin 目录下,基本上都是一些可执行文件,并且它们还不大。其实这些可执行文件只是外层的一层封装而已,这样的目的是避免输入的命令过长。...而实际上它们本身又都是由 Java 编写的,所以 jdk 目录下的 jre 既提供了这些工具的运行时环境,也提供了我们编写完成的 Java 程序运行时环境。...所以,很明显,jdk 是我们的开发工具包,它集成了 jre ,因此我们安装 jdk 的时候可以选择不再安装 jre 而直接使用 jdk 中的 jre 运行我们的 Java 程序。...下一个问题,Java 为什么能跨平台,实现一次编写,多处运行Java 能够跨平台运行的核心在于 JVM 。不是 Java 能够跨平台,而是它的 jvm 能够跨平台。

1.3K40
领券