[英]Error: could not find libjava.so, Error: could not find Java 2 Runtime Environment
[英]Error: could not find libjava.so while checking for jps
我正在使用 centOS 6.10
ls /usr/lib/jvm
O/P:java-1.6.0-openjdk-1.6.0.41.X86_64 java-1.7.0-openjdk-1.7.0.181.X86_64 java-1.7.0-openjdk-1.7.0.261.X86_64
java -version
O/P:java 版本“1.7.0_181”
在檢查 jps 時,我得到了這樣的結果,
jps
O/P:錯誤:找不到 libjava.so 錯誤:找不到 Java SE 運行時環境。
我的 bashrc 文件就像,
export JAVA_HOME=/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.261.X86_64/
export HADOOP_INSTALL=/usr/local/hadoop
export PATH=$PATH:$HADOOP_INSTALL/bin
我不知道為什么會彈出這個錯誤。 因此,我感到很沮喪,我正在尋找解決方案超過 3 天。 任何幫助將非常感激。
提前致謝!!
我發現當涉及到庫時,與 java 相關的進程有時很古怪。
首先確定 libjava.so 的路徑並確認 lib 和可執行文件相同,為 32 位或 64 位之一:
file /path/to/libjava.so /other/path/to/jps
接下來,以 jps 之類的任何進程為例,運行以下命令:
ldd /some/path/jps
運行時鏈接編輯器應列出可執行文件引用的每個庫的絕對路徑,如果未找到,則顯示錯誤。 出現錯誤時,lib 丟失或存在於鏈接編輯器搜索路徑之外的目錄中。 對於正常進程,設置 LD_LIBRARY_PATH 通常有效,但 java 的東西往往很古怪。 嘗試使用 cmd 行或腳本,例如:
#!/bin/bash
LD_LIBRARY_PATH=/usr/local/lib64 /full/path/to/jps $*
(將 /usr/local/lib64 替換為 libjava.so 的主要路徑)。 請注意,不需要獨立的“export KEY=val”,它會將信息添加到環境中並被隨后的任何進程繼承; 如圖所示,shell 僅為命令行設置 KEY=val。
一些與 java 相關的怪癖是清除環境或在自己的子進程中重置諸如 LD_LIBRARY_PATH 之類的東西,或者使用 NULL envp 調用 execve() 的進程,然后子進程會按照您的描述失敗。 在這種情況下,您可能不得不求助於將庫移動到特定目錄,或修改列出 lib 目錄的與 java 相關的配置文件。
有時可以使用 strace 快速找到答案,在限制 output 時更容易,例如:
strace -f -e execve,open jps
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.