2013-04-29 12 views
22

ho scompattato il mio JDK in/usr/java /.impostando JAVA_HOME & CLASSPATH in CentOS 6

e ho messo CLASSPATH, PATH, JAVA_HOME in/etc/profile come qui di seguito.

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 

E quando compilo qualche file java in /usr/java/jdk1.0.7_21/bin,

funziona. Ma quando sto facendo la stessa cosa su un'altra cartella, non è così.

Esso mostra NoClassDefFoundError.

così ho controllato classpath, PATH, JAVA_HOME via eco.

Essa mostra come qui di seguito.

[[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 

Voglio usare java in console, cosa posso fare questa situazione?

Grazie in anticipo.

PS. di couse che ho fatto source /etc/profile.

================= gli errori quello che sto affrontando con ===================== ==

quando io comando java A (Il mio nome classe è A).

Error: Could not find or load main class A 

caso io comando java -cp/home/guest/lavoro/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) 

================ ===== pieno contenuto del mio codice ====================================== java parte. percorso è /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 parte. parte sinistra è l'impostazione predefinita.

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 

altre parti potrebbero essere utili per risolvere.

  • which java stampe "/ usr/java/bin". c'è un collegamento simbolico.
  • La mia posizione è jdk /usr/java/jdk1.7.0_21. all'interno di ./bin ogni codice funziona correttamente.
  • Non ho toccato /root/.bash_profile. Ho appena modificato/etc/profile.

Grazie per tale interesse. anche se non ha capito. il tuo aiuto è stato di grande guarigione per me: D Grazie ancora.

+0

Sono state prese delle java -version e javac - versione dalla console ?? – prasanth

+0

@prasanth Sì, funziona bene e mostra il messaggio corretto. Attualmente sto usando 1.7.0_19. grazie per aver chiesto –

+0

Puoi pubblicare la traccia dello stack completo di errore? – prasanth

risposta

2

ho creato una cartella denominata un in/home/Prasanth e copiato il codice per un file chiamato A.java. Ho compilato da/home/prasanth come javac a/A.java ed eseguito javac a.A. Ho avuto uscita come

a! 
+0

Sì, questo è normale, purtroppo tranne il mio. , e totalmente esausto: -

+0

avevi ragione. Devo usare il comando java non nella cartella, ma la sua cartella genitore, significa "src". ieri era così stressato, quindi non testava correttamente , Grazie ancora: D –

+0

Ma non so ancora il motivo per cui non riesco ad eseguirlo nella cartella del pacchetto. Se hai qualche idea, fammelo sapere ^^ –

6

Istruzioni:

  1. fare clic sull'icona "Terminal" nel pannello del desktop per aprire un terminale finestra e accedere al prompt dei comandi.
  2. Digitare il comando "java, che" per trovare il percorso del file eseguibile Java .
  3. Digitare il comando "su -" per diventare l'utente root.
  4. Digitare il comando "vi /root/.bash_profile" per aprire il file "bash_profile" del sistema nell'editor di testo Vi. È possibile sostituire "vi" con l'editor di testo preferito.
  5. Digitare "export JAVA_HOME =/usr/local/java /" nella parte inferiore del file. Sostituisci "/ usr/local/java" con la posizione trovata nel passaggio due.
  6. Salvare e chiudere il file "bash_profile".
  7. Immettere il comando "exit" per chiudere la sessione root.
  8. Log fuori dal sistema e riaccedere.
  9. Digitare il comando "echo $ JAVA_HOME" per garantire che il percorso è stato impostato correttamente.

set java_home in centos

+0

Ho fatto quello che dice, ma dopo quello (incluso il riavvio e l'accesso), quando digito echo $ JAVA_HOME, non mostra nulla. Ma alcune situazioni sono state cambiate. per esempio, non ho più bisogno dell'opzione -cp, grazie per questo: D –

+0

totalmente funzionante grazie broski – jemiloii

1

Sembra che tu non abbia alcun problema con le variabili ambientali.

compilare il file da src con

javac a/A.java

Poi, eseguire il programma come

java a.A

+0

[root @ localhost a] # javac a/A.java javac: file non trovato: aAjava Uso: javac utilizzare -help per un elenco di opzioni possibili –

+0

Penso che non sia un lavoro corretto. Intendo parte javac. –

+0

Prova questo 'javac \' find * -name '* .java' \ '' da src – prasanth

0

ho dovuto cambiare /etc/profile.d/java_env.sh per indicare il nuovo percorso e quindi il logout/login.

31

Cerca here per CentOS JRE installare tutti gli utenti:

Il modo più semplice per impostare una variabile di ambiente in CentOS è quello di utilizzare l'esportazione come in

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

$> export PATH=$PATH:$JAVA_HOME 

Tuttavia, variabili impostate in tale i modi sono transitori cioè spariranno nel momento in cui esci dal guscio. Ovviamente questo non è utile quando si impostano variabili di ambiente che devono persistere anche quando il sistema si riavvia. In questi casi, è necessario impostare le variabili all'interno del profilo di sistema. In CentOS (sto usando v5.2), la cartella /etc/profile.d/ è la posizione consigliata per aggiungere personalizzazioni al profilo di sistema. Ad esempio, quando si installa Sun JDK, potrebbe essere necessario impostare le variabili di ambiente JAVA_HOME e JRE_HOME. In questo caso: Creare un nuovo file chiamatojava.sh

vim /etc/profile.d/java.sh 

All'interno di questo file, inizializzare le variabili di ambiente necessarie

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 

Ora, quando si riavvia il computer, le variabili di ambiente all'interno di Java .sh verrà automaticamente inizializzato (checkout/etc/profile se sei curioso di sapere come vengono caricati i file in /etc/profile.d/).

PS: Se si desidera caricare le variabili d'ambiente all'interno java.sh senza dover riavviare la macchina, è possibile utilizzare il comando source come in:

$> source java.sh 
+0

Grazie amico. Funziona come un gioco da ragazzi. Ho aggiunto a java.sh t e copia incolla lo stesso sulla riga di comando che in realtà lo abilita subito. – Ammad