2013-04-29 89 views
22

我已將jdk解壓到/ usr/java /中。在CentOS 6中設置JAVA_HOME&CLASSPATH

,我把CLASSPATH,PATH,JAVA_HOME到/ etc/profile文件如下圖所示。

export JAVA_HOME=/usr/java/jdk1.7.0_21 
export PATH=$PATH:$JAVA_HOME/bin 
export CLASSPATH=$JAVA_HOME/jre/lib/ext:$JAVA_HOME/lib/tools.jar 

當我編譯/usr/java/jdk1.0.7_21/bin一些Java文件,

它的工作原理。但是當我在其他文件夾上做同樣的事情時,它不會。

它顯示NoClassDefFoundError。

所以我已經檢查CLASSPATH,PATH,JAVA_HOME通過回聲。

它顯示如下。

[[email protected] a]# echo $JAVA_HOME 
/usr/java/jdk1.7.0_21 
[[email protected] a]# echo $PATH 
/usr/lib64/qt-3.3/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/guest/bin:/usr/java/jdk1.7.0_21/bin:/usr/java/bin:/usr/java/jdk1.7.0_21/bin 
[[email protected] a]# echo $CLASSPATH 
/usr/java/jdk1.7.0_21/jre/lib/ext:/usr/java/jdk1.7.0_21/lib/tools.jar 

我想在控制檯中使用java,我能做些什麼來解決這種情況?

在此先感謝。

PS。 couse我做過source /etc/profile

=================的錯誤就是我面臨着===================== ==

當我命令java A(我的類名稱爲A)。

Error: Could not find or load main class A 

情況下,我命令java -cp /家/客體/工作區/ AAA/SRC/A/A

Exception in thread "main" java.lang.NoClassDefFoundError: A (wrong name: a/A) 
    at java.lang.ClassLoader.defineClass1(Native Method) 
    at java.lang.ClassLoader.defineClass(ClassLoader.java:791) 
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) 
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:449) 
    at java.net.URLClassLoader.access$100(URLClassLoader.java:71) 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:361) 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:423) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:356) 
    at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:482) 

================ =====我的代碼全部內容====================================== java部分。路徑是/usr/guest/workspace/AAA/src/a/A.java

package a; 

public class A { 
    public static void main(String[] args) { 
     System.out.println("a!\n"); 
    } 
} 

/etc/profile部分。左邊部分是默認的。

export JAVA_HOME=/usr/java/jdk1.7.0_21 
export PATH=$PATH:$JAVA_HOME/bin 
export CLASSPATH=$JAVA_HOME/jre/lib/ext:$JAVA_HOME/lib/tools.jar 

其他本部分可能會幫助您改進。

  • which java打印「/ usr/java/bin」。有符號鏈接。
  • 我的jdk位置是/usr/java/jdk1.7.0_21。 ./bin裏面的每個代碼工作正常。
  • 我沒有碰到/root/.bash_profile。我剛剛編輯了/ etc/profile。

感謝這樣的興趣。即使它沒有弄清楚。你的幫助對我來說是巨大的康復:D再次感謝。

+0

你檢查Java的版本和javac - 從控制檯版本?? – prasanth 2013-04-29 04:48:48

+0

@prasanth是的,它工作很好,並顯示適當的消息。我目前正在使用1.7.0_19。感謝您的詢問 – 2013-04-29 04:52:51

+0

您可以發佈您的完整堆棧跟蹤錯誤嗎? – prasanth 2013-04-29 04:56:31

回答

2

我創建了一個名爲在/ home/prasanth文件夾,並複製你的代碼一個名爲A.java的文件。我從/ home/prasanth編譯爲javac a/A.java並運行javac a.A。我得到了輸出

a! 
+0

是的,這很正常,不幸的是除了我的。 ,並完全用盡: - <無論如何,謝謝你的努力:D – 2013-04-29 10:31:07

+0

你是對的。我不得不使用java命令不在文件夾中,但其父文件夾,意味着'src'。昨天是如此強調,所以沒有正確測試,我想,再次感謝:D – 2013-04-30 00:22:38

+0

但是我仍然不知道爲什麼我不能在包文件夾中執行,如果你有任何想法,請讓我知道^^ – 2013-04-30 00:29:47

6

說明:

  1. 點擊在桌面面板打開終端 窗口和訪問命令提示「終端」圖標。
  2. 輸入命令「which java」以找到Java 可執行文件的路徑。
  3. 輸入命令「su - 」成爲root用戶。
  4. 輸入命令「vi /root/.bash_profile」在Vi文本編輯器中打開系統 「bash_profile」文件。您可以用 替換您的首選文本編輯器。
  5. 在文件底部輸入「export JAVA_HOME =/usr/local/java /」。 用步驟二中找到的位置替換「/ usr/local/java」。
  6. 保存並關閉「bash_profile」文件。
  7. 輸入命令「exit」關閉根會話。
  8. 註銷系統,並重新登錄。
  9. 鍵入命令「回聲$ JAVA_HOME」,以確保路徑設置正確 。

set java_home in centos

+0

我做了什麼,但之後(包括重新啓動和重新登錄),當我鍵入回聲$ JAVA_HOME,它什麼也沒有顯示。但有些情況已經改變。例如,我不需要-cp選項了,謝謝你:D – 2013-04-29 05:14:22

+0

完全工作謝謝broski – jemiloii 2014-09-12 22:16:19

1

看來,你沒有用環境變量的任何問題。

編譯從SRC文件與

javac a/A.java

然後,運行您的程序作爲

java a.A

+0

[root @ localhost a] #javac a/A.java javac:文件未找到:aAjava 用法:javac <源文件> 使用-help查看可能的選項列表 – 2013-04-29 06:13:08

+0

我認爲這是不正確的工作。我的意思是javac部分。 – 2013-04-29 06:13:52

+0

試試這個'javac \'find * -name'* .java'\''from src – prasanth 2013-04-29 06:22:26

0

我不得不改變/etc/profile.d/java_env.sh指向新的路徑,然後註銷/登錄。

31

搜索here爲CentOS JRE安裝的所有用戶:

設置在CentOS的環境變量的最簡單方法是使用導出爲

$> export JAVA_HOME=/usr/java/jdk.1.5.0_12 

$> export PATH=$PATH:$JAVA_HOME 

然而,在這樣一組變量方式是暫時的,即它們將在你離開殼體的那一刻消失。顯然,這在設置即使在系統重新啓動時仍需要保留的環境變量時也沒有幫助。 在這種情況下,您需要在系統寬度配置文件中設置變量。在CentOS(我使用v5.2)中,文件夾/etc/profile.d/是向系統配置文件添加自定義設置的推薦位置。 例如,安裝Sun JDK時,可能需要設置JAVA_HOME和JRE_HOME環境變量。在這種情況下: 創建java.sh

vim /etc/profile.d/java.sh 

在這個文件稱爲新的文件,當您重新啓動計算機,JAVA中的環境變量初始化必要的環境變量

export JRE_HOME=/usr/java/jdk1.5.0_12/jre 
export PATH=$PATH:$JRE_HOME/bin 

export JAVA_HOME=/usr/java/jdk1.5.0_12 
export JAVA_PATH=$JAVA_HOME 

export PATH=$PATH:$JAVA_HOME/bin 

現在。sh會自動初始化(如果你對如何加載/etc/profile.d/中的文件感到好奇,請檢查/ etc/profile)。

PS:如果你想加載中java.sh的環境變量,而不必重新啓動機器,你可以使用源命令,如:

$> source java.sh 
+0

謝謝你。像breeze一樣工作。我將它添加到java.sh t中,並將它們複製粘貼到命令行上,以便立即啓用它。 – Ammad 2017-09-18 18:55:05