找不到正确的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路径报错内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Java操作pdf文件的方法大全

    Java操作pdf文件的方法大全

    这篇文章主要为大家详细介绍了Java操作pdf文件的相关知识,例如合并pdf文件,手绘pdf文件以及导出PDF文件等,有需要的小伙伴可以参考一下
    2024-04-04
  • SpringMVC @RequestMapping注解详解

    SpringMVC @RequestMapping注解详解

    本文主要介绍了SpringMVC @RequestMapping注解详解,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-12-12
  • spring boot集成WebSocket日志实时输出到web页面

    spring boot集成WebSocket日志实时输出到web页面

    这篇文章主要为大家介绍了spring boot集成WebSocket日志实时输出到web页面展示的详细操作,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步
    2022-03-03
  • SpringBoot实现接口防刷的五种方案

    SpringBoot实现接口防刷的五种方案

    接口防刷是保障系统安全与稳定性的重要措施,恶意的高频请求不仅会消耗服务器资源,还可能导致数据异常,甚至系统瘫痪,本文将介绍在SpringBoot框架下实现接口防刷的5种技术方案,需要的朋友可以参考下
    2025-04-04
  • Java 8 对 HashSet 元素进行排序的操作方法

    Java 8 对 HashSet 元素进行排序的操作方法

    Java 中HashSet是一个不保证元素顺序的集合类,其内部是基于 HashMap 实现的,HashSet不支持排序,我们在需要对HashSet 排序时,必须将其转换为支持排序的集合或数据结构,如 List,本文将详细介绍在 Java 8 中如何对 HashSet 中的元素进行排序,感兴趣的朋友一起看看吧
    2024-11-11
  • 如何解决IDEA中JSP页面部分出现绿色背景色问题

    如何解决IDEA中JSP页面部分出现绿色背景色问题

    这篇文章主要介绍了如何解决IDEA中JSP页面部分出现绿色背景色问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-12-12
  • SpringBoot整合Shiro的方法详解

    SpringBoot整合Shiro的方法详解

    Apache Shiro是一个java安全(权限)框架,Shiro可以非常容易的开发出足够好的应用,其不仅可以用在javase环境,也可以用在javaee环境。本文介绍了SpringBoot整合Shiro的方法,需要的可以参考一下
    2022-05-05
  • spring在service层的方法报错事务不会回滚的解决

    spring在service层的方法报错事务不会回滚的解决

    这篇文章主要介绍了spring在service层的方法报错事务不会回滚的解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-02-02
  • Java多线程Thread基础学习

    Java多线程Thread基础学习

    每一个正在执行的程序都是一个进程,资源只有一块,所以在同一时间段会有多个程序同时执行,但是在一个时间点上,只能由一个程序执行,多线程是在一个进程的基础之上的进一步划分,需要的朋友可以参考下
    2023-04-04
  • 详解spring整合hibernate的方法

    详解spring整合hibernate的方法

    这篇文章主要介绍了spring整合hibernate的方法,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-02-02

最新评论