一、需求描述

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


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

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

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


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


但是实际上我是想运行这个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


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

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

2.2 bat文件运行jar文件

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

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

proguardgui.bat文件内容如下:

@ECHO OFFREM 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=..
:homejava -jar "%PROGUARD_HOME%"\lib\proguardgui.jar %*


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

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

然后就打开了

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

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

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

@echo off
java -jar %1
pause


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


2.3 一劳永逸的方法

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

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

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

  1. 找到javaw.exe

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

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

点击【更多应用】

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

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

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


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

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

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

  1. 修改注册表
  • win+R打开命令行窗口,输入regedit打开注册表:

  • 找到“HKEY_CLASSES_ROOT\Applications\javaw.exe\shell\open\command”,右键选择“修改”

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

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

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

2.4 鼠标右键方法

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

2.4.1 注册鼠标右键菜单

我们新建一个regiser.reg文件

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

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文件,右键选择【Run Jar】即可运行了。

2.4.2 删除鼠标右键菜单

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


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

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

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

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

【我的Java开发学习之旅】Windows系统下如何运行.jar文件?相关推荐

  1. Windows系统下pycharm运行.sh文件,执行shell命令

    (6条消息) Windows系统下pycharm运行.sh文件,执行shell命令_扑哧丶的博客-CSDN博客_pycharm运行shell脚本

  2. Windows系统下实现两个文件夹自动同步问题(mklink命令的使用)

    Windows系统下实现两个文件夹自动同步问题(mklink命令的使用) 例:E:\My OneNote文件夹同步到OneDrive中 路径1:C:\Users\XXX\OneDrive\My One ...

  3. 我的Java开发学习之旅------心得总结:Java性能优化技巧集锦

    一.通用篇 "通用篇"讨论的问题适合于大多数Java应用. 1.1 不用new关键词创建类的实例 用new关键词创建类的实例时,构造函数链中的所有构造函数都会被自动调用.但如果一个 ...

  4. git学习(8):windows系统下VI编辑器的基本使用

    vi编辑器是Linux系统下标准的编辑器.而且不逊色于其他任何最新的编辑器.但是在windows系统中如何使用VI编辑器呢? 下面给大家介绍在git环境下的vi编辑器的简单用法和部分命令. 工具原料: ...

  5. 我的Java开发学习之旅------JAVA 笔记ClassLoader.getResourceAsStream() 与 Class.getResourceAsStream()的区别...

    今天,一读者在我的 Android通过调用Webservice实现手机号码归属地查询 文章中给我回复了一个问题,由于没有具体说明我的sop12.xml文件是放在src目录下,不是和具体操作类Addre ...

  6. 我的Java开发学习之旅------gt;Base64的编码思想以及Java实现

    Base64是一种用64个字符来表示任意二进制数据的方法. 用记事本打开exe.jpg.pdf这些文件时,我们都会看到一大堆乱码,因为二进制文件包含很多无法显示和打印的字符,所以,如果要让记事本这样的 ...

  7. 我的Java开发学习之旅------Base64的编码思想以及Java实现

    Base64是一种用64个字符来表示任意二进制数据的方法. 用记事本打开exe.jpg.pdf这些文件时,我们都会看到一大堆乱码,因为二进制文件包含很多无法显示和打印的字符,所以,如果要让记事本这样的 ...

  8. 我的Java开发学习之旅------求字符串中出现次数最多的字符串以及出现的次数...

    金山公司面试题:一个字符串中可能包含a~z中的多个字符,如有重复,如String data="aavzcadfdsfsdhshgWasdfasdf",求出现次数最多的那个字母及次数 ...

  9. 我的Java开发学习之旅------Java资源的国际化详解

    internationalization (国际化)简称 i18n,因为在i和n之间还有18个字符,localization(本地化 ),简称L10n. 国际化相关的Java类 Java国际化主要通过 ...

最新文章

  1. Spring学习篇:IoC知识整理(一)
  2. Android UI:XML文件配置按钮等背景方案
  3. R开发(part9)--文件系统管理
  4. linux上还原自主nuget包需要注意的问题
  5. Oracle备份还原
  6. 雷军被重新任命为金山软件董事会副主席
  7. vue-cli如何创建项目到计算机指定位置(如何自定义选择磁盘?)
  8. 2.7、Spring Boot 异常处理体系
  9. MySQL图形化管理器——EMS SQL Management Studio
  10. 美团遭遇反垄断调查;微信利用社交垄断封杀西瓜视频;Qt 6 for Python发布|极客头条...
  11. WebService 调用接口报错(0)null
  12. 音频怎么转换mp3格式?
  13. Linux#Shell#if [ $# -ne 1 ];then 是什么意思?
  14. js 26个字母排序
  15. 云服务器系统esxi,云服务器安装esxi
  16. 网站URL网址末尾是否应该使用反斜杠
  17. python从键盘输入一个数、判断其是奇数还是偶数_从键盘上任意输入一个正数,判断是奇数还是偶数...
  18. 数据堂将出席盖世汽车2021第三届汽车智能座舱与用户体验大会
  19. 95后女孩从月入3000到月入10万
  20. 无标注数据是鸡肋还是宝藏?阿里工程师这样用它

热门文章

  1. vscode如何连接新设备_新设备进口报关公司如何选择
  2. 用C语言实现“7-7 12-24小时制”,基础编程由此开始(第七节)
  3. 如何快速在CAD中批量提取坐标点数据?
  4. Pinterest今年营收有望达6亿美元 考虑IPO
  5. 友盟社交分享中的那些坑
  6. 宏转录组方法_最后一周|高级转录组分析和R语言数据可视化第十二期 (线上线下同时开课)...
  7. 1-Spring Security OAuth2专栏介绍
  8. java arraylist lik_java中ArrayList 、LinkList的区别分析
  9. MCMC模型原理解读
  10. Linux usb 4. Device 详解