从网上下了一个 .jar 文件,比如游戏整合包里的模组或一个绿色小工具,双击没反应,右键打开方式里一堆选项也不知道选哪个。jar 文件怎么打开,取决于你想拿它干什么。

先弄清 jar 是什么

jar 是 Java Archive 的缩写,本质上是用 zip 格式打包的压缩包,里面装着编译后的 class 文件、配置和资源,图标是个咖啡杯。同一个文件,三种用途对应三种打开方式。

当压缩包看内容

7-Zip、WinRAR、Bandizip 都能直接右键解压,可以看到里面的目录结构。包里常见 META-INF 目录,其中的 MANIFEST.MF 记录着主类和类路径,程序从哪个入口跑起来就看它。

当程序运行

多数 jar 是拿来跑的。前提是电脑装了 Java 运行环境(JRE 或 JDK),然后在命令行执行:

java -jar 文件名.jar

先看电脑装没装 Java、装的是哪个版本,命令行敲 java -version 就能看到,jar 能不能跑和版本强相关,报错时把版本信息留着对照。

双击没反应通常是两个原因:系统没装 Java;或者 jar 的打开方式被压缩软件抢占了。前者去装对应版本的 Java,后者在打开方式里选 Java 平台并设为默认。要注意版本匹配:高版本 JDK 编译的包,低版本运行环境跑不动,一般会报 Class 版本相关的错误,把 Java 升上去就能解决。还有些 jar 本身需要参数或配置文件,光双击本来就不行。

当代码读或者当库用

想知道里面写了什么逻辑,用 IntelliJ IDEA 或 Eclipse 打开,IDEA 对 class 文件自带反编译,点开就能看到还原出的源码。写 Java 项目时还能把 jar 加进依赖里引用,这是它在开发里最常见的身份。

判断一个 jar 是不是可执行程序,用压缩软件打开看 MANIFEST.MF 里有没有 Main-Class 这一行,有就是带入口的程序,没有就多半是当库用的包,跑了也起不来。另外解压改完文件再压回去时,注意直接在原包里替换文件,别解压出一层文件夹再整个压回去,路径变了程序就找不到入口。

归类一下:想跑就装 Java 用命令启动,想看内容就当压缩包解压,想读逻辑就用 IDE 反编译。同一个 jar,三种身份。