当前位置: 首页 > 面试题库 >

jar文件如何执行?这些课程会被提取吗?

费承载
2023-03-14
问题内容

我们知道这jar是一种压缩的存档文件格式,可以用作已编译的Java类和conf文件的容器。据我所知,要从压缩的容器文件中读取任何内容,首先需要将它们提取到某个位置。

那么JVM如何在jar中执行类?它是否将罐子中的内容提取到临时位置,然后执行类?


问题答案:

JVM能够从jar文件加载类或文件,而无需将jar提取为临时文件。

您也可以在标准库中使用此html" target="_blank">功能,JarFile有关更多信息,请参见。

因此,不,JVM不会将jar提取到临时文件,类(和资源)只是按需加载。

jar文件基本上是带有预定义条目的zip文件"META- INF/MANIFEST.MF"(仅在可执行jar情况下才是必需的)。该MANIFEST.MF条目(文件)包含JVM读取的一些信息。有关清单文件的更多信息:

处理清单文件:基础知识

如果是可执行jar,则清单文件还包含应加载的主类,并public static void main(String[])调用该类的方法以启动应用程序。该Main-Class清单条目指定主类:

Main-Class: classname


 类似资料:
  • 问题内容: 我正在开发仅Linux的Java应用程序,并且需要在其中执行Shell脚本。根据我所读的内容,执行该Shell脚本的唯一方法是从jar文件中提取该脚本并执行它。问题是?如何在运行时提取该Shell脚本? 先感谢您 问题答案: Unix不知道如何在jar文件中运行脚本。您必须使用给定的内容创建一个文件(有一些例程在运行时中创建临时文件),然后运行该文件- 请参阅如何从Java代码运行Un

  • 问题内容: 我需要在运行时复制一个打包在Jar中的文件夹。我想通过在同样包含在同一文件夹中的类中调用函数来实现。 我试过使用: 但这不起作用。我可能必须递归使用函数。有没有更优雅/前瞻的方式来做到这一点? 万一我必须递归地做它:1.我不想指定硬编码的文件,我想动态地做它2.我不想创建一个单独的档案。我希望此资源与处理该资源的类位于同一个Jar中 谢谢 我最后做了Koziołek的建议。尽管我希望有

  • 问题内容: 我有一个Maven项目,其中我正在尝试执行脚本(用R编写)。我也将此脚本文件放在源代码目录中。我发现此脚本根本没有执行。但是,当我将此脚本移到jar文件之外时,它会执行!谁能告诉我原因,并给我一些解决方案以将脚本放入jar中,同时确保其执行? 非常感谢 ! 问题答案: 我将执行以下操作: 使用ClassLoader.getResourceAsStream()获取文件的InputStre

  • 问题内容: 我如何从Java程序运行本地jar文件? jar文件不在Java调用程序的类路径中。 问题答案: 我建议你使用并启动一个新的JVM。 以下是一些入门知识:

  • 以下是从Java Archive(jar)文件中提取内容和元数据的程序 - import java.io.File; import java.io.FileInputStream; import java.io.IOException; import org.apache.tika.exception.TikaException; import org.apache.tika.metadata.

  • 问题内容: 我正在尝试从.jar文件中提取文件。我该如何使用命令行? 我正在运行Windows 7 问题答案: 从文档: 要从jar文件中提取文件,请使用,如下所示: 要仅从jar文件中提取某些文件,请提供其文件名: 该文件夹可能不适合您,在我的Windows分区上是: 除非的位置在您的路径环境变量中,否则您必须指定完整路径/从文件夹内部运行程序。 编辑: 这是另一篇文章,专门针对提取JAR:ht