当前位置:首页 > Java

java –jar 如何使用

2026-03-24 22:24:31Java

java -jar 的基本用法

java -jar 用于运行打包为可执行 JAR 文件的 Java 应用程序。命令格式如下:

java -jar <jar文件名>.jar

确保系统已安装 Java 环境(JDK 或 JRE),并通过 java -version 验证版本兼容性。

指定 JAR 文件的路径

如果 JAR 文件不在当前目录,需提供完整或相对路径:

java -jar /path/to/yourfile.jar

或相对路径(例如上级目录):

java -jar ../project/yourfile.jar

传递命令行参数

向 JAR 中的 main 方法传递参数时,在 JAR 文件名后添加参数:

java -jar app.jar arg1 arg2

程序内部通过 String[] args 接收这些参数。

java –jar 如何使用

内存与 JVM 参数配置

通过 JVM 参数调整运行配置,例如堆内存大小:

java -Xmx512m -Xms256m -jar app.jar
  • -Xmx512m:设置最大堆内存为 512MB。
  • -Xms256m:设置初始堆内存为 256MB。

其他常用参数:

  • -D<property>=<value>:设置系统属性(如 -Dconfig.file=/path/config.properties)。

依赖项与类路径问题

如果 JAR 依赖外部库,需通过 -cp-classpath 指定依赖路径:

java –jar 如何使用

java -cp app.jar:lib/* com.example.Main
  • lib/* 表示加载 lib 目录下所有 JAR 文件。

对于可执行 JAR,确保 MANIFEST.MF 中已正确配置 Class-Path

常见问题排查

  1. 无主清单属性
    错误提示 no main manifest attribute 表示 JAR 的 MANIFEST.MF 缺少 Main-Class 定义。需重新打包并指定入口类。

  2. 版本不兼容
    使用 -version 确认 Java 版本与 JAR 编译版本匹配。例如,编译为 Java 11 的 JAR 不能在 Java 8 中运行。

  3. 权限问题
    在 Linux/macOS 系统下,确保 JAR 文件有执行权限:

    chmod +x app.jar

其他注意事项

  • 使用 -verbose 参数可输出详细类加载信息,辅助调试。
  • 通过 -jar 运行时,-cp 参数会被忽略,依赖项需在 MANIFEST.MF 中声明。
  • 如需调试,添加 JVM 参数 -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005 启用远程调试。

分享给朋友:

相关文章

java如何读取文件

java如何读取文件

读取文件的常用方法 Java提供了多种读取文件的方式,适用于不同场景和需求。以下是几种常见的方法: 使用FileInputStream和BufferedInputStream读取二进制文件 try…

react路由如何使用

react路由如何使用

React 路由的基本使用 React 路由通常通过 react-router-dom 库实现,用于管理单页面应用(SPA)中的页面导航。 安装 react-router-dom: npm ins…

如何编译java文件

如何编译java文件

安装JDK 确保系统已安装Java Development Kit(JDK)。可通过命令行输入 javac -version 和 java -version 验证。若未安装,需从Oracle或Open…

java如何创建包

java如何创建包

创建Java包的步骤 在Java中,包(package)用于组织和管理类文件,避免命名冲突。以下是创建Java包的详细方法: 定义包名 在Java源文件的开头使用package关键字声明包名。包名…

java如何导包

java如何导包

导入包的方法 在Java中,导入包(package)可以通过import语句实现,用于引入其他类或包中的功能。以下是几种常见的导包方式: 导入单个类 import java.util.ArrayL…

java如何遍历map

java如何遍历map

遍历Map的几种方法 在Java中,遍历Map有多种方式,可以根据需求选择合适的方法。以下是常见的几种遍历方式: 使用entrySet遍历 通过entrySet()方法获取键值对的集合,可以同时访问…