簡體   English   中英

"Linux 中的 JAVA_HOME 目錄"

[英]JAVA_HOME directory in Linux

有沒有我可以用來找出JAVA_HOME<\/code>目錄的 linux 命令? 我嘗試打印出環境變量(“env”),但找不到目錄。

"

在Linux上你可以運行$(dirname $(dirname $(readlink -f $(which javac))))

在Mac上你可以運行$(dirname $(readlink $(which javac)))/java_home

我不確定窗戶,但我想想where javac會讓你非常接近

echo $JAVA_HOME將打印該值,如果已設置。 但是,如果未在啟動腳本中手動設置它,則可能未設置。

如果您嘗試使用which java並且找不到任何內容,則可能無法在您的計算機上安裝Java,或者至少不在您的路徑中。 根據您擁有的Linux發行版以及是否具有root訪問權限,您可以訪問http://www.java.com下載所需的版本。 然后,您可以將JAVA_HOME設置為指向此目錄。 請記住,這只是一個約定,不應該用於確定是否安裝了Java。

我知道這已經晚了,但是這個命令會搜索/ usr /目錄來為你找到java

sudo find /usr/ -name *jdk

結果來了

/usr/lib/jvm/java-6-openjdk
/usr/lib/jvm/java-1.6.0-openjdk

僅供參考,如果您使用的是Mac,目前JAVA_HOME位於

/System/Library/Frameworks/JavaVM.framework/Home

只是另一個解決方案,這個跨平台(使用java ),並指向jre的位置。

java -XshowSettings:properties -version 2>&1 > /dev/null | grep 'java.home'

輸出所有java的當前設置,並找到一個名為java.home

對於Windows,你可以使用findstr而不是grep。

java -XshowSettings:properties -version 2>&1 | findstr "java.home"

要顯示您使用的環境變量的值:

echo $ VARIABLE

所以在你的情況下將是:

echo $ JAVA_HOME

如果您沒有設置它,您可以添加.bashrc文件:

export JAVA_HOME = $(readlink -f / usr / bin / java | sed“s:bin / java ::”)

它會在您更新包時動態更改。

如果在您的環境中定義了$JAVA_HOME ...

$ echo $JAVA_HOME
$ # I am not lucky...

你可以從加載的類中猜出來。

$ java -showversion -verbose 2>&1 | head -1
[Opened /usr/lib/jvm/java-1.7.0-openjdk-1.7.0.75.x86_64/jre/lib/rt.jar]

此方法可確保您在多次安裝時找到正確的jdk / jre

或使用strace

$ strace -e open java -showversion 2>&1 | grep -m1 /jre/
open("/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.75.x86_64/jre/bin/../lib/amd64/jli/tls/x86_64/libpthread.so.0", O_RDONLY) = -1 ENOENT (No such file or directory)

在終端上,鍵入:

echo“$ JAVA_HOME”

如果您沒有得到任何東西,那么您的環境變量JAVA_HOME尚未設置。 您可以嘗試使用“locate java”來嘗試發現Java的安裝位置。

你有沒有設置你的JAVA_HOME

  • Korn和bash shell:導出JAVA_HOME = jdk-install-dir
  • Bourne shell:JAVA_HOME = jdk-install-dir;導出JAVA_HOME
  • C shell:setenv JAVA_HOME jdk-install-dir

這是一個改進,只抓住stdout的目錄:

java -XshowSettings:properties -version 2>&1 \
   | sed '/^[[:space:]]*java\.home/!d;s/^[[:space:]]*java\.home[[:space:]]*=[[:space:]]*//'

您可以通過執行此命令echo $JAVA_HOME<\/code>從命令行進行檢查。 如果安裝了 Java 但未設置路徑,則需要確定 Java 安裝的路徑。 我更喜歡使用sudo update-alternatives --config java<\/code>列出所有已安裝版本並標記當前活動版本並提供對話框進行切換:

There are 3 programs which provide 'java'.

  Selection    Command
-----------------------------------------------
   1           java-11-openjdk.x86_64 (/usr/lib/jvm/java-11-openjdk-11.0.14.0.9-2.fc35.x86_64/bin/java)
   2           java-17-openjdk.x86_64 (/usr/lib/jvm/java-17-openjdk-17.0.2.0.8-1.fc35.x86_64/bin/java)
*+ 3           /usr/java/jdk-17.0.2/bin/java

Enter to keep the current selection[+], or type selection number:

http://www.gnu.org/software/sed/manual/html_node/Print-bash-environment.html#Print-bash-environment

如果你真的想獲得一些關於你的BASH的信息,請將該腳本放在你的.bashrc中並觀看它。 你可以滾動並查看它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM