【我的Java开发学习之旅】Windows系统下如何运行.jar文件?
一、需求描述
今天查询大数据平台,看到刚刚发布的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 直接使用命令
- ctrl+r进入CMD模式
- 输入 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包的打开方式。
- 找到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文件的图标就会显示为咖啡杯,但还不能正常打开。
- 修改注册表
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文件?相关推荐
- Windows系统下pycharm运行.sh文件,执行shell命令
(6条消息) Windows系统下pycharm运行.sh文件,执行shell命令_扑哧丶的博客-CSDN博客_pycharm运行shell脚本
- Windows系统下实现两个文件夹自动同步问题(mklink命令的使用)
Windows系统下实现两个文件夹自动同步问题(mklink命令的使用) 例:E:\My OneNote文件夹同步到OneDrive中 路径1:C:\Users\XXX\OneDrive\My One ...
- 我的Java开发学习之旅------心得总结:Java性能优化技巧集锦
一.通用篇 "通用篇"讨论的问题适合于大多数Java应用. 1.1 不用new关键词创建类的实例 用new关键词创建类的实例时,构造函数链中的所有构造函数都会被自动调用.但如果一个 ...
- git学习(8):windows系统下VI编辑器的基本使用
vi编辑器是Linux系统下标准的编辑器.而且不逊色于其他任何最新的编辑器.但是在windows系统中如何使用VI编辑器呢? 下面给大家介绍在git环境下的vi编辑器的简单用法和部分命令. 工具原料: ...
- 我的Java开发学习之旅------JAVA 笔记ClassLoader.getResourceAsStream() 与 Class.getResourceAsStream()的区别...
今天,一读者在我的 Android通过调用Webservice实现手机号码归属地查询 文章中给我回复了一个问题,由于没有具体说明我的sop12.xml文件是放在src目录下,不是和具体操作类Addre ...
- 我的Java开发学习之旅------gt;Base64的编码思想以及Java实现
Base64是一种用64个字符来表示任意二进制数据的方法. 用记事本打开exe.jpg.pdf这些文件时,我们都会看到一大堆乱码,因为二进制文件包含很多无法显示和打印的字符,所以,如果要让记事本这样的 ...
- 我的Java开发学习之旅------Base64的编码思想以及Java实现
Base64是一种用64个字符来表示任意二进制数据的方法. 用记事本打开exe.jpg.pdf这些文件时,我们都会看到一大堆乱码,因为二进制文件包含很多无法显示和打印的字符,所以,如果要让记事本这样的 ...
- 我的Java开发学习之旅------求字符串中出现次数最多的字符串以及出现的次数...
金山公司面试题:一个字符串中可能包含a~z中的多个字符,如有重复,如String data="aavzcadfdsfsdhshgWasdfasdf",求出现次数最多的那个字母及次数 ...
- 我的Java开发学习之旅------Java资源的国际化详解
internationalization (国际化)简称 i18n,因为在i和n之间还有18个字符,localization(本地化 ),简称L10n. 国际化相关的Java类 Java国际化主要通过 ...
最新文章
- Spring学习篇:IoC知识整理(一)
- Android UI:XML文件配置按钮等背景方案
- R开发(part9)--文件系统管理
- linux上还原自主nuget包需要注意的问题
- Oracle备份还原
- 雷军被重新任命为金山软件董事会副主席
- vue-cli如何创建项目到计算机指定位置(如何自定义选择磁盘?)
- 2.7、Spring Boot 异常处理体系
- MySQL图形化管理器——EMS SQL Management Studio
- 美团遭遇反垄断调查;微信利用社交垄断封杀西瓜视频;Qt 6 for Python发布|极客头条...
- WebService 调用接口报错(0)null
- 音频怎么转换mp3格式?
- Linux#Shell#if [ $# -ne 1 ];then 是什么意思?
- js 26个字母排序
- 云服务器系统esxi,云服务器安装esxi
- 网站URL网址末尾是否应该使用反斜杠
- python从键盘输入一个数、判断其是奇数还是偶数_从键盘上任意输入一个正数,判断是奇数还是偶数...
- 数据堂将出席盖世汽车2021第三届汽车智能座舱与用户体验大会
- 95后女孩从月入3000到月入10万
- 无标注数据是鸡肋还是宝藏?阿里工程师这样用它
热门文章
- vscode如何连接新设备_新设备进口报关公司如何选择
- 用C语言实现“7-7 12-24小时制”,基础编程由此开始(第七节)
- 如何快速在CAD中批量提取坐标点数据?
- Pinterest今年营收有望达6亿美元 考虑IPO
- 友盟社交分享中的那些坑
- 宏转录组方法_最后一周|高级转录组分析和R语言数据可视化第十二期 (线上线下同时开课)...
- 1-Spring Security OAuth2专栏介绍
- java arraylist lik_java中ArrayList 、LinkList的区别分析
- MCMC模型原理解读
- Linux usb 4. Device 详解