java -jar命令详解之运行JAR文件、传递参数与性能调优

 更新时间:2025年04月21日 10:06:26   作者:愚公搬程序  
这篇文章主要介绍了java -jar命令详解之运行JAR文件、传递参数与性能调优的相关资料,java -jar命令用于运行可执行的JAR文件,它解析JAR文件中的META-INF/MANIFEST.MF文件来确定主类,并执行该类的 main方法,运行时可通过参数传递给主类,需要的朋友可以参考下

前言

java -jar 命令是Java开发中用于运行可执行JAR(Java Archive)文件的一种方式。

JAR文件是一种文件格式,用于将多个Java类文件、相关元数据和资源(如文本、图片等)打包成一个文件,便于分发、部署和版本控制。

下面详细介绍java -jar命令的相关内容。

一、基本用法

java -jar命令的基本语法如下:

java -jar your-application.jar

其中,your-application.jar是你要运行的JAR文件的名称。

运行这个命令时,Java虚拟机(JVM)会查找JAR文件中的MANIFEST.MF文件,该文件位于JAR文件的META-INF目录下。

MANIFEST.MF文件指定了JAR文件的元数据,包括主类(Main-Class)信息。JVM会加载并执行这个主类的main方法。

二、注意事项

  • 确保JAR文件是可执行的:JAR文件必须包含一个主类,并且在MANIFEST.MF文件中正确声明了这个主类。

  • 环境变量:确保你的系统已经安装了Java Development Kit(JDK)或Java Runtime Environment(JRE),并且JAVA_HOME环境变量已经设置正确,同时%JAVA_HOME%\bin(Windows)或$JAVA_HOME/bin(Unix/Linux/macOS)已经添加到了系统的PATH环境变量中。

  • 依赖管理:如果JAR文件依赖了其他的库或JAR包,你需要在MANIFEST.MF文件中使用Class-Path属性指定这些依赖的路径,或者在运行时通过-cp或-classpath参数指定。

三、高级用法

java -jar命令还支持一些高级用法,比如传递参数给JAR文件内的主类。这些参数直接跟在JAR文件名称后面,例如:

java -jar your-application.jar param1 param2

这些参数会被传递给主类的main方法。

四、常见参数

除了直接运行JAR文件外,java命令还支持一些参数来优化JVM的性能或配置系统属性。这些参数可以与-jar选项一起使用,例如:

• -Xms:设置Java堆的初始大小。

• -Xmx:设置Java堆的最大大小。

• -Xss:设置每个线程的栈大小。

• -D=:设置系统属性。

• -verbose:class:打印类加载信息。

• -verbose:gc:打印垃圾回收信息。

例如,要以前台模式启动一个JAR文件,并设置最大堆内存为2G,可以使用以下命令:

java -Xmx2G -jar your-application.jar

五、后台运行与日志记录

如果你希望JAR文件在后台运行,并且想要将输出重定向到文件中,可以使用nohup命令(Linux/macOS)或start /B命令(Windows)。例如,在Linux系统中,你可以使用以下命令:

nohup java -jar your-application.jar > application.log 2>&1 &

这条命令会让JAR文件在后台运行,并将标准输出和标准错误都重定向到application.log文件中。

示例简介

运行一个名为HelloWorld.jar的可执行JAR文件

假设你有一个名为HelloWorld.jar的JAR文件,该文件包含一个主类HelloWorld,该类有一个main方法,用于输出“Hello, World!”字符串。现在,你希望通过java -jar命令来运行这个JAR文件。

步骤 1: 准备JAR文件

首先,确保你已经有了HelloWorld.jar文件,并且该文件是可执行的。这意味着JAR文件必须包含一个META-INF/MANIFEST.MF文件,该文件指定了主类(Main-Class)为HelloWorld。

步骤 2: 打开命令行工具

打开你的命令行工具(在Windows上是CMD或PowerShell,在macOS或Linux上是Terminal)。

步骤 3: 切换到JAR文件所在的目录

使用cd命令切换到包含HelloWorld.jar文件的目录。例如,如果JAR文件位于C:\Users\YourName\Desktop目录下(Windows示例),则输入:

cd C:\Users\YourName\Desktop

或者,如果JAR文件位于/home/yourname/Desktop目录下(Linux/macOS示例),则输入:

cd /home/yourname/Desktop

步骤 4: 运行JAR文件

在命令行中输入以下命令来运行JAR文件:

java -jar HelloWorld.jar

按下回车键后,你应该会在命令行窗口中看到输出“Hello, World!”字符串。

附加说明:

• 后台运行:如果你希望JAR文件在后台运行,并且不想让它占用当前的命令行窗口,你可以使用操作系统的特定命令或工具来实现这一点。例如,在Linux/macOS上,你可以使用nohup命令或&符号将命令放到后台执行。

nohup java -jar HelloWorld.jar > hello.log 2>&1 &

这个命令会将输出重定向到hello.log文件中,并且即使你关闭了终端,JAR文件也会继续在后台运行。

• 日志记录:如上例所示,你可以通过重定向输出到文件来记录JAR文件的运行日志。

• 传递参数:如果你的JAR文件需要接收命令行参数,你可以在java -jar命令后面直接添加它们。这些参数会被传递给JAR文件中的主类的main方法。

java -jar HelloWorld.jar arg1 arg2

• 性能调优:你可以通过JVM参数来优化JAR文件的运行性能。例如,使用-Xmx和-Xms参数来设置JVM堆的最大和初始大小。

java -Xmx512m -Xms256m -jar HelloWorld.jar

以上就是通过示例详细讲解java -jar命令的使用过程。希望这对你有所帮助!

小结

java -jar命令是Java开发中运行可执行JAR文件的标准方式。

通过合理使用这个命令及其参数,你可以方便地部署和运行Java应用程序。

同时,了解JAR文件的结构和MANIFEST.MF文件的作用,对于深入理解Java应用程序的打包和分发也非常重要。

到此这篇关于java -jar命令详解之运行JAR文件、传递参数与性能调优的文章就介绍到这了,更多相关java -jar命令运行JAR文件传递参数内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 关于JSCH使用自定义连接池的说明

    关于JSCH使用自定义连接池的说明

    这篇文章主要介绍了关于JSCH使用自定义连接池的说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-09-09
  • java并发包JUC同步器框架AQS框架原文翻译

    java并发包JUC同步器框架AQS框架原文翻译

    发现了一篇JDK作者的论文《The java.util.concurrent Synchronizer Framework》主要描述了作者对AbstractQueuedSynchronizer同步器框架的设计和实现。权威性毋庸置疑!自然需要拜读一下,配上中文翻译,希望大家能有所收获
    2022-02-02
  • struts1之简单mvc示例_动力节点Java学院整理

    struts1之简单mvc示例_动力节点Java学院整理

    这篇文章主要介绍了struts1之简单mvc示例的相关资料,需要的朋友可以参考下
    2017-09-09
  • JDBC连接MySQL并实现模糊查询

    JDBC连接MySQL并实现模糊查询

    本文详细讲解了JDBC连接MySQL并实现模糊查询的方式,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-01-01
  • Java8如何基于flatMap处理异常函数

    Java8如何基于flatMap处理异常函数

    这篇文章主要介绍了Java8如何基于flatMap处理异常函数,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-09-09
  • Java三种方法将List转换为Map的实例

    Java三种方法将List转换为Map的实例

    今天小编就为大家分享一篇关于Java三种方法将List转换为Map的实例,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-10-10
  • Java中的对称加密详解

    Java中的对称加密详解

    大家好,本篇文章主要讲的是Java中的对称加密详解,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下
    2022-01-01
  • 关于springmvc-servlet中的配置小知识详解

    关于springmvc-servlet中的配置小知识详解

    这篇文章主要介绍了关于springmvc-servlet中的配置小知识详解,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-12-12
  • java Servlet 实现动态验证码图片示例

    java Servlet 实现动态验证码图片示例

    这篇文章主要介绍了java Servlet 实现动态验证码图片示例的资料,这里整理了详细的代码,有需要的小伙伴可以参考下。
    2017-02-02
  • Java并发编程中高频异常的原因,场景与解决方案全解析

    Java并发编程中高频异常的原因,场景与解决方案全解析

    在Java并发编程中,异常处理是保障程序稳定性的核心环节,本文将深度解析4类高频并发异常的产生原因、典型场景,并给出可落地的解决方案,帮你彻底避开这些坑
    2026-03-03

最新评论