找不到正确的java_home路径报错解决

 更新时间:2023年07月10日 14:15:15   作者:ytKing  
本文主要介绍了找不到正确的java_home路径报错解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

问题由来

在使用homebrew安装jadx后无法正常启动,报错如下:

example % jadx Original\$\$EnhancerByCGLIB\$\$818cf910.class

ERROR: JAVA_HOME is set to an invalid directory: @@HOMEBREW_JAVA@@
Please set the JAVA_HOME variable in your environment to match the
location of your Java installation.

看报错的字面意思表示找不到jdk的路径,但是查看java版本以及路径配置:

~ % java -version
openjdk version "17.0.1" 2021-10-19
OpenJDK Runtime Environment (build 17.0.1+12-39)
OpenJDK 64-Bit Server VM (build 17.0.1+12-39, mixed mode, sharing)
~ % vim ~/.bash_profile
...
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk-17.0.1.jdk/Contents/Home
...

发现并没有什么问题,那么是什么导致jadx找不到正确的路径呢?

问题排查

首先查看jadx的安装位置,由于是通过homebrew安装,通过如下命令可以查看jadx的安装路径:

~ % brew list jadx                         
/opt/homebrew/Cellar/jadx/1.4.7/bin/jadx
/opt/homebrew/Cellar/jadx/1.4.7/bin/jadx-gui
/opt/homebrew/Cellar/jadx/1.4.7/libexec/bin/ (4 files)
/opt/homebrew/Cellar/jadx/1.4.7/libexec/lib/ (51 files)

进入bin目录后vim查看一下jadx文件:

~ % vim jadx
#!/bin/bash
JAVA_HOME="${JAVA_HOME:-@@HOMEBREW_JAVA@@}" exec "/opt/homebrew/Cellar/jadx/1.4.7/libexec/bin/jadx"  "$@"

可以看到启动命令中的JAVA_HOME变成了-@@HOMEBREW_JAVA@@,正好对应上了上面的报错。

解决方案

第一种:暴力解决法

最快的方式就是直接修改启动命令,由于是只读文件,先修改权限:

bin % sudo chmod 777 jadx

然后拿到上文中找到的正确的java_home的值替换-@@HOMEBREW_JAVA@@,替换后的启动命令如下:

#!/bin/bash
JAVA_HOME="${JAVA_HOME:-/opt/homebrew/opt/openjdk/libexec/openjdk.jdk/Contents/Home}" exec "/opt/homebrew/Cellar/jadx/1.4.7/libexec/bin/jadx"  "$@"

替换后即可正常使用jadx。

第二种:正常解决法

想要正常的解决得先知道这个错误发生的原理,我们国内的用户使用homebrew时一般都是配置了国内的镜像源来提速的,而问题就出在国内的镜像源上了,从国内镜像安装依赖于 Java 的某些配置目前无法正常工作,正常来说@@HOMEBREW_JAVA@@是会被替换掉的,但是因为使用了国内的镜像源导致没有正常的被替换。而brew需要清单才能正确替换@@HOMEBREW_JAVA@@,但brew只知道如何从ghcr.io 获取清单。

查看 HOMEBREW_BOTTLE_DOMAIN 如下:

bin % echo $HOMEBREW_BOTTLE_DOMAIN               
https://mirrors.ustc.edu.cn/homebrew-bottles/bottles

想要正确安装只需要使用如下命令即可:

~ % HOMEBREW_BOTTLE_DOMAIN= brew reinstall kafka

最后附上github上对于此问题的相关讨论:讨论链接

到此这篇关于找不到正确的java_home路径报错解决的文章就介绍到这了,更多相关java_home路径报错内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 微信开发准备第一步 Maven仓库管理新建WEB项目

    微信开发准备第一步 Maven仓库管理新建WEB项目

    这篇文章主要为大家详细介绍了微信开发准备第一步,Maven仓库管理新建WEB项目,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-04-04
  • java实现俄罗斯方块游戏

    java实现俄罗斯方块游戏

    这篇文章主要为大家详细介绍了java实现俄罗斯方块游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-02-02
  • kkfileview Word文件预览乱码异常问题及解决

    kkfileview Word文件预览乱码异常问题及解决

    解决CentOS服务器kkfileview预览乱码问题,需下载中文字体包,上传解压至/usr/share/fonts目录,设置字体权限后重启kkfile及office服务,其他字体可同理操作
    2025-08-08
  • 一篇文章带你深入了解Java类加载

    一篇文章带你深入了解Java类加载

    这篇文章主要介绍了Java中类加载过程全面解析,具有一定参考价值,需要的朋友可以了解下,希望能给你带来帮助
    2021-08-08
  • SpringBoot注册第三方Bean的方法总结

    SpringBoot注册第三方Bean的方法总结

    众所周知,SpringBoot默认会扫描启动类所在的包及其子包,一般我们都是在需要的类上通过注解的方式去将Bean注册交给IOC进行管理,但是注册第三方Bean的方案却不支持,所以本文给大家介绍了SpringBoot注册第三方Bean的方法,需要的朋友可以参考下
    2024-01-01
  • java 将数据加载到内存中的操作

    java 将数据加载到内存中的操作

    这篇文章主要介绍了java 将数据加载到内存中的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-09-09
  • springboot集成RocketMQ过程及使用示例详解

    springboot集成RocketMQ过程及使用示例详解

    这篇文章主要为大家介绍了springboot集成RocketMQ过程及使用示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-07-07
  • Java实现表达式二叉树

    Java实现表达式二叉树

    这篇文章主要为大家详细介绍了如何利用Java实现表达式二叉树,感兴趣的小伙伴们可以参考一下
    2016-08-08
  • Jsoup解析html实现招聘信息查询功能

    Jsoup解析html实现招聘信息查询功能

    这篇文章主要为大家详细介绍了Jsoup解析html实现招聘信息查询功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-04-04
  • spring boot 本地图片不能加载(图片路径)的问题及解决方法

    spring boot 本地图片不能加载(图片路径)的问题及解决方法

    这篇文章主要介绍了spring boot 本地图片不能加载(图片路径)的问题,解决的办法其实很简单,只要写一个配置文件,也就是图片位置的转化器,原理是虚拟一个在服务器上的文件夹,与本地图片的位置进行匹配。需要的朋友可以参考下
    2018-04-04

最新评论