/JC-jEnv

windows java environ manage

Primary LanguageBatchfile

JC-jEnv

Author: JC0o0l,Jerrybird

GitHub: https://github.com/chroblert/JC-jEnv.git

WeChat: JC_SecNotes(Zer0ne安全研究)

0x00 用途

Java版本切换工具,可以很方便的在java的多个版本之间切换。可以设置只在当前的终端中生效还是在全局都生效。

0x01 原理:

  • 通过reg,set,setx等命令修改或刷新JAVA_HOME,PATH,<alias>等环境变量以及注册表。

  • 将添加的<alias>保存到用户环境变量JC_jEnv中

  • 通过call来达到多重嵌套的效果

  • 通过doskey来设置命令别名

0x02 效果:

jenv -h

1611209361297.png

jenv local java9

1611210131816.png

jenv version

1611210177545.png

jenv del java9

1611210266710.png

jenv add d:\11-java\jdk-9.0.4 java9

1611210250119.png

0x03 参数说明:

jenv [options]

options如下

  • version
    • 显示当前设置的所有的java版本
  • local <alias>
    • 设置java版本,只在当前shell下起作用
  • global <alias>
    • 设置java版本,在全局下都起作用
  • add <目录> <alias>
    • 添加一个版本的java。
    • 如:jenv add d:\java\jdk-9.0.4 java9
  • del <alias>
    • 删除一个版本的java
    • 如:jenv del java9

0x04 使用说明:

  1. 将该bat脚本添加到PATH系统环境变量中

    这样使用的时候,可以直接输入jenv

  2. 用户环境变量PATH中使用%JAVA_HOME%\bin

    path环境变量中不能有具体的java路径,要使用%JAVA_HOME%\bin的方式,无论系统环境变量还是用户环境变量

  3. 删除系统环境变量中的JAVA_HOME 因为生成path环境变量的时候,系统变量中的path>用户环境变量中的path。而要修改系统环境变量,需要管理员权限,所以该程序只修改了用户环境变量。

注:

  • 系统环境变量中PATH值中的路径下不能有java.exe。如:C:\windows\system32路径下有8版本的java.exe,则全局无法生效,即:即使jenv global java13,但每次新创建的cmd下运行的java都是C:\windows\system32路径下的那个。
  • 该脚本使用用户环境变量,因而系统环境变量中不能有JAVA_HOME变量

0x05 测试环境

序号 系统 版本 是否支持
1 Windows 10 专业版 支持
2
3
4

参考资料:

参考资料:windows系统一键配置修改环境变量

参考资料:Windows设置cmd别名

参考资料:setx设置永久环境变量

参考资料:刷新环境变量

参考资料:batch之变量延迟

参考资料:was unexpect at this time

参考资料:批处理变量多重嵌套

参考资料:环境变量中特殊字符()的问题

参考资料:setx1024个字符限制的解决方法