6 个版本 (3 个重大更新)
0.7.1 | 2023年12月6日 |
---|---|
0.7.0 | 2023年11月29日 |
0.6.0 | 2022年4月18日 |
0.5.0 | 2022年3月7日 |
#2 在 #jvm
每月51次下载
38KB
625 行
javalocate
命令行工具,用于在 macOS、Linux(Debian、Ubuntu、RHEL/CentOS & Fedora)和 Windows 上查找 JVM 版本 - 用于设置 JAVA_HOME,尤其是在具有不同 JVM 版本和架构的机器上非常有用。
想到了你,使用 Apple Silicon 硬件的 Java 开发者 🐱💻
安装
该实用程序可以通过 Homebrew 通过 homebrew-javalocate tap 安装
brew tap dameikle/javalocate
brew install javalocate
或者通过 crates.io 上的 javalocate crate 使用 Cargo 安装
cargo install javalocate
用法
该实用程序的设计类似于 /usr/libexec/java_home,通过提供一些标志来控制选择。
如下所示
OPTIONS:
-a, --arch <ARCH> Architecture to filter on (e.g. x86_64, aarch64, amd64)
-d, --detailed Print out full details
-f, --fail Return error code if no JVM found
-h, --help Print help information
-n, --name <NAME> JVM Name to filter on
-v, --version <VERSION> Version to filter on (e.g. 1.8, 11, 17, etc)
-r, --register-location <LOCATION> Registers a custom JVM location directory to search in
-x, --remove-location <LOCATION> Removes a registered custom JVM location directory
-l, --display-locations Displays all the custom JVM location directories that are registered
输出
默认情况下,该实用程序输出找到的“顶级”JVM的单一路径位置,按降序版本排序(即 Java 17 > Java 8),优先考虑系统架构(即在 Apple Silicon Mac 上 aarch64 > x86_64)。
传递详细标志(--detailed 或 -d)将打印找到的所有 JVM 的完整详细信息。
此标志还可以与过滤器结合使用,以显示筛选集的完整详细信息。
过滤
可以使用 name、version 和 arch 过滤选项单独或一起使用来微调选择。
例如,要获取 Java 17 的路径
javalocate -v 17
或者要获取 Java 11 的 x86_64 JVM 的路径
javalocate -v 11 -a x86_64
或者要获取最新可用的 aarch64 JVM 的路径
javalocate -a aarch64
您还可以通过在版本后附加一个 + 来指定最小版本
javalocate -v 1.8+
退出码
默认情况下,无论是否找到 JVM,该实用程序都返回 OK(0)退出码。
设置失败标志(_--fail 或 -f)将更改此行为,返回 CONFIG ERROR(78)退出码。
这可以在 shell 脚本中使用时很有用。
例如,以下示例在尝试设置 JAVA_HOME 环境变量时,如果找不到 Java 11 或更高版本,将返回错误代码
export JAVA_HOME=$(javalocate -v 11+ -f)
默认位置
该工具在以下操作系统的默认JVM安装位置进行查找:
操作系统 | 位置 |
---|---|
macOS | /Library/Java/JavaVirtualMachines |
Ubuntu | /usr/lib/jvm |
Debian | /usr/lib/jvm |
RHEL | /usr/lib/jvm |
CentOS | /usr/lib/jvm |
Fedora | /usr/lib/jvm |
Windows | 注册表 - HKEY_LOCAL_MACHINE\Software |
它假定Linux和Windows上的JVM包中包含release文件,而macOS上则包含release文件和Info.plist文件。
已添加对从路径文件名中构建信息(在没有release文件的情况下)的实验性支持。这可能会出现在较旧的JVM上。
自定义位置
您可以使用自定义JVM位置选项添加自己的搜索位置。如果您维护自己的手动安装的JVM集合,这可能很有用。
例如,如果您将JVM手动安装到/opt/jvms目录中,您可以配置它使用--register-location (-r) 命令进行搜索
javalocate -r /opt/jvms
javalocate --register-location /opt/jvms
如果您想删除该位置,可以使用--remove-location (-x) 命令
javalocate -x /opt/jvms
javalocate --remove-location /opt/jvms
您可以使用--display-locations (-l) 命令列出当前已注册的位置
javalocate -l
javalocate --display-locations
技巧和窍门
Bash别名
将以下内容添加到您的~/.bashrc(或~/.bash_aliases)文件中
setjava() {
export JAVA_HOME=`javalocate -v $1`
}
允许您快速在版本之间切换
setjava 17
echo $JAVA_HOME
setjava 8
echo $JAVA_HOME
setjava 11
echo $JAVA_HOME
Powershell
您可以使用以下语法在Powershell中设置所需版本
$env:JAVA_HOME=$(javalocate.exe -v 11)
构建
该工具是用Rust开发的,可以从源代码使用以下方式构建
cargo build
或对于发布版本
cargo build --profile release
许可证
版权所有 2022 David Meikle
根据Apache许可证版本2.0(“许可证”);除非您遵守许可证的条款,否则您不得使用此文件。您可以在以下位置获得许可证副本:
http://www.apache.org/licenses/LICENSE-2.0
除非适用法律要求或书面同意,否则根据许可证分发的软件是按“原样”基础分发的,不提供任何明示或暗示的保证或条件。有关许可证的具体语言,请参阅许可证。许可证中规定了许可和限制的具体内容。
依赖项
~10–22MB
~331K SLoC