找不到正確的java_home路徑報(bào)錯(cuò)解決
問題由來
在使用homebrew安裝jadx后無(wú)法正常啟動(dòng),報(bào)錯(cuò)如下:
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.
看報(bào)錯(cuò)的字面意思表示找不到j(luò)dk的路徑,但是查看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 ...
發(fā)現(xiàn)并沒有什么問題,那么是什么導(dǎo)致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)
進(jìn)入bin目錄后vim查看一下jadx文件:
~ % vim jadx #!/bin/bash JAVA_HOME="${JAVA_HOME:-@@HOMEBREW_JAVA@@}" exec "/opt/homebrew/Cellar/jadx/1.4.7/libexec/bin/jadx"??"$@"
可以看到啟動(dòng)命令中的JAVA_HOME變成了-@@HOMEBREW_JAVA@@,正好對(duì)應(yīng)上了上面的報(bào)錯(cuò)。
解決方案
第一種:暴力解決法
最快的方式就是直接修改啟動(dòng)命令,由于是只讀文件,先修改權(quán)限:
bin % sudo chmod 777 jadx
然后拿到上文中找到的正確的java_home的值替換-@@HOMEBREW_JAVA@@,替換后的啟動(dòng)命令如下:
#!/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。
第二種:正常解決法
想要正常的解決得先知道這個(gè)錯(cuò)誤發(fā)生的原理,我們國(guó)內(nèi)的用戶使用homebrew時(shí)一般都是配置了國(guó)內(nèi)的鏡像源來提速的,而問題就出在國(guó)內(nèi)的鏡像源上了,從國(guó)內(nèi)鏡像安裝依賴于 Java 的某些配置目前無(wú)法正常工作,正常來說@@HOMEBREW_JAVA@@是會(huì)被替換掉的,但是因?yàn)槭褂昧藝?guó)內(nèi)的鏡像源導(dǎo)致沒有正常的被替換。而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上對(duì)于此問題的相關(guān)討論:討論鏈接
到此這篇關(guān)于找不到正確的java_home路徑報(bào)錯(cuò)解決的文章就介紹到這了,更多相關(guān)java_home路徑報(bào)錯(cuò)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
spring?boot集成WebSocket日志實(shí)時(shí)輸出到web頁(yè)面
這篇文章主要為大家介紹了spring?boot集成WebSocket日志實(shí)時(shí)輸出到web頁(yè)面展示的詳細(xì)操作,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步2022-03-03SpringBoot實(shí)現(xiàn)接口防刷的五種方案
接口防刷是保障系統(tǒng)安全與穩(wěn)定性的重要措施,惡意的高頻請(qǐng)求不僅會(huì)消耗服務(wù)器資源,還可能導(dǎo)致數(shù)據(jù)異常,甚至系統(tǒng)癱瘓,本文將介紹在SpringBoot框架下實(shí)現(xiàn)接口防刷的5種技術(shù)方案,需要的朋友可以參考下2025-04-04Java 8 對(duì) HashSet 元素進(jìn)行排序的操作方法
Java 中HashSet是一個(gè)不保證元素順序的集合類,其內(nèi)部是基于 HashMap 實(shí)現(xiàn)的,HashSet不支持排序,我們?cè)谛枰獙?duì)HashSet 排序時(shí),必須將其轉(zhuǎn)換為支持排序的集合或數(shù)據(jù)結(jié)構(gòu),如 List,本文將詳細(xì)介紹在 Java 8 中如何對(duì) HashSet 中的元素進(jìn)行排序,感興趣的朋友一起看看吧2024-11-11如何解決IDEA中JSP頁(yè)面部分出現(xiàn)綠色背景色問題
這篇文章主要介紹了如何解決IDEA中JSP頁(yè)面部分出現(xiàn)綠色背景色問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-12-12spring在service層的方法報(bào)錯(cuò)事務(wù)不會(huì)回滾的解決
這篇文章主要介紹了spring在service層的方法報(bào)錯(cuò)事務(wù)不會(huì)回滾的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-02-02Java多線程Thread基礎(chǔ)學(xué)習(xí)
每一個(gè)正在執(zhí)行的程序都是一個(gè)進(jìn)程,資源只有一塊,所以在同一時(shí)間段會(huì)有多個(gè)程序同時(shí)執(zhí)行,但是在一個(gè)時(shí)間點(diǎn)上,只能由一個(gè)程序執(zhí)行,多線程是在一個(gè)進(jìn)程的基礎(chǔ)之上的進(jìn)一步劃分,需要的朋友可以參考下2023-04-04