一、需求描述

今天查询大数据平台,看到刚刚发布的APP版本有crash,然后平台上的crash都是混淆的样子,类似如下所示:

JAR包文件运行 JAVA .jar如何运行_jar


所以我得使用proguardgui.jar工具来进行反混淆,查看出现问题的代码在哪里。

但是我准备打开proguardgui.jar工具的时候,发现打不开,如下所示:

C:\Android\SDK\tools\proguard\lib\proguardgui.jar工具被7zip压缩软件当做压缩包了。

JAR包文件运行 JAVA .jar如何运行_windows_02


直接双击,打开,如下所示,展开了jar包的内容。

JAR包文件运行 JAVA .jar如何运行_jar_03


但是实际上我是想运行这个C:\Android\SDK\tools\proguard\lib\proguardgui.jar工具啊!

二、运行jar包

2.1 直接使用命令

  1. ctrl+r进入CMD模式
  2. 输入 java -jar XXX.jar

在cmd窗口,输入java -jar ,接着把jar文件直接拖进cmd窗口,则会自动填充这个jar包的完整路径,如下所示:

Microsoft Windows [Version 10.0.18363.1500]
(c) 2019 Microsoft Corporation. All rights reserved.

C:\Users\000>java -jar C:\Android\SDK\tools\proguard\lib\proguardgui.jar

JAR包文件运行 JAVA .jar如何运行_jar_04


输入如上所示的命令,直接打开。

JAR包文件运行 JAVA .jar如何运行_windows_05

这个方法方便是方便,但是每次启动都得在cmd窗口输入java -jar XXX.jar命令才可以运行。用的多了,也会显得麻烦,让人无法忍受。

2.2 bat文件运行jar文件

上面的命令可以写入到bat文件中,这样直接双击bat文件就可以运行该jar文件了。

突然,我脑袋机灵了一会,想起来直接好像是直接运行.bat文件,没有直接运行.jar文件的,然后在C:\Android\SDK\tools\proguard\bin目录下找到了proguardgui.bat文件。

JAR包文件运行 JAVA .jar如何运行_windows_06

proguardgui.bat文件内容如下:

@ECHO OFF

REM Start-up script for the GUI of ProGuard -- free class file shrinker,
REM optimizer, obfuscator, and preverifier for Java bytecode.
REM
REM Note: when passing file names containing spaces to this script,
REM       you'll have to add escaped quotes around them, e.g.
REM       "\"C:/My Directory/My File.txt\""

IF EXIST "%PROGUARD_HOME%" GOTO home
SET PROGUARD_HOME=..
:home

java -jar "%PROGUARD_HOME%"\lib\proguardgui.jar %*

JAR包文件运行 JAVA .jar如何运行_windows_07


上面的bat,核心代码还是java -jar xxx.jar*

双击bat文件,可以直接打开

JAR包文件运行 JAVA .jar如何运行_jar_08

然后就打开了

JAR包文件运行 JAVA .jar如何运行_jar文件_09

此方法麻烦的地方在于每个jar文件都需要建立一个对应的bat脚本文件。

当然也可以写一个通用的bat文件,然后拖动jar到bat文件上,即可执行jar文件

比如,我们写一个 run_jar.bat 脚本文件,内容如下

@echo off
java -jar %1
pause

JAR包文件运行 JAVA .jar如何运行_JAR包文件运行 JAVA_10


然后拖动jar到bat文件上,即可执行jar文件

JAR包文件运行 JAVA .jar如何运行_jar_11


JAR包文件运行 JAVA .jar如何运行_jar_12

JAR包文件运行 JAVA .jar如何运行_JAR包文件运行 JAVA_13

2.3 一劳永逸的方法

方法一,方便是方便,但是每次启动都得在cmd窗口输入java -jar XXX.jar命令才可以运行。
方法二,也需要写个bat脚本文件,或者每个jar包写一个对应的bat脚本,或者写个通用的bat脚本。

用的多了,也会显得麻烦,有没有什么一劳永逸的方法呢?

答案是有的,我们修改jar包的打开方式。

  1. 找到javaw.exe

我们右键proguardgui.jar,选择【打开方式】

JAR包文件运行 JAVA .jar如何运行_jar_14


然后我们【选择其他应用(C)】

JAR包文件运行 JAVA .jar如何运行_jar_15


点击【更多应用】

JAR包文件运行 JAVA .jar如何运行_jar_16


滚动到最下面,选择【在这台电脑上查找其他应用】

JAR包文件运行 JAVA .jar如何运行_jar_17


找到JDK安装目录,找到JDK目录下的javaw.exewe文件,如下所示:

我的电脑上,路径为:
C:\Android\JDK\JDK1.8\bin\javaw.exe

JAR包文件运行 JAVA .jar如何运行_JAR包文件运行 JAVA_18


选中javaw.exe文件,然后选择【打开】

JAR包文件运行 JAVA .jar如何运行_java_19


但是此时还是打不开,我们右键proguardgui.jar文件,选择上【Java(TM)Platform Se binary】,然后勾选上【始终使用此应用打开.jar文件】

JAR包文件运行 JAVA .jar如何运行_JAR包文件运行 JAVA_20

这样jar文件的图标就会显示为咖啡杯,但还不能正常打开。

JAR包文件运行 JAVA .jar如何运行_windows_21

  1. 修改注册表
  • win+R打开命令行窗口,输入regedit打开注册表:
  • JAR包文件运行 JAVA .jar如何运行_JAR包文件运行 JAVA_22

  • 找到“HKEY_CLASSES_ROOT\Applications\javaw.exe\shell\open\command”,右键选择“修改”
  • JAR包文件运行 JAVA .jar如何运行_JAR包文件运行 JAVA_23

JAR包文件运行 JAVA .jar如何运行_windows_24

  • 在文本框中加入“-jar”,其他的东西不要动。

(这里需要注意!!!输入的形式一定要如同下图,-jar插入到“%1”前,且-jar要与其前后内容都有一个空格隔开。一定要注意空格!空格!空格!)

JAR包文件运行 JAVA .jar如何运行_JAR包文件运行 JAVA_25

点击“确定”,此时,双击,jar文件就可以直接打开了。

2.4 鼠标右键方法

当然我们也可以直接写注册脚本,如下 所示:

2.4.1 注册鼠标右键菜单

我们新建一个regiser.reg文件

JAR包文件运行 JAVA .jar如何运行_java_26


regiser.reg文件内容如下所示:

JAR包文件运行 JAVA .jar如何运行_jar文件_27

Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\*\shell\JarRun]
@="Run Jar"

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\*\shell\JarRun\command]
@="C:\\Android\\JDK\\JDK1.8\\javaw.exe -jar \"%1\""

双击运行regiser.reg文件,会弹出下面的对话框,点击【是(Y)】

JAR包文件运行 JAVA .jar如何运行_JAR包文件运行 JAVA_28


注册成功

JAR包文件运行 JAVA .jar如何运行_jar文件_29


我们可以去注册表编辑器查看

JAR包文件运行 JAVA .jar如何运行_JAR包文件运行 JAVA_30


选中jar文件,右键选择【Run Jar】即可运行了。

JAR包文件运行 JAVA .jar如何运行_JAR包文件运行 JAVA_31

2.4.2 删除鼠标右键菜单

如果欲删除此右键菜单,则将如下内容保存为unregiser.reg文件,如下:

JAR包文件运行 JAVA .jar如何运行_JAR包文件运行 JAVA_32


unregiser.reg文件代码如下所示:

JAR包文件运行 JAVA .jar如何运行_jar_33

Windows Registry Editor Version 5.00
[-HKEY_LOCAL_MACHINE\SOFTWARE\Classes\*\shell\JarRun]

[-HKEY_LOCAL_MACHINE\SOFTWARE\Classes\*\shell\JarRun\command]

双击运行unregiser.reg文件,弹出如下对话框,选择【是(Y)】

JAR包文件运行 JAVA .jar如何运行_windows_34


刚刚注册的右键菜单就被删除了

JAR包文件运行 JAVA .jar如何运行_windows_35

JAR包文件运行 JAVA .jar如何运行_JAR包文件运行 JAVA_36