2013-04-29 16 views
22

Mam rozpakowałem mój jdk w/usr/java /.ustawienie JAVA_HOME & CLASSPATH w CentOS 6

i kładę CLASSPATH, ścieżka, JAVA_HOME w/etc/profile jak poniżej.

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 

I kiedy skompilować jakiś plik javy w /usr/java/jdk1.0.7_21/bin,

to działa. Ale kiedy robię to samo w innym folderze, tak nie jest.

Wyświetla NoClassDefFoundError.

Więc mam zaznaczone ścieżki klasy, ścieżka, JAVA_HOME przez echo.

Pokazuje się jak poniżej.

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

Chcę używać java w konsoli, Co mogę zrobić, aby ta sytuacja?

Z góry dziękuję.

PS. ze mnie zrobiłem source /etc/profile.

================= Błędy co mi stoi z ===================== ==

kiedy polecenie java A (Moja nazwa klasy to A).

Error: Could not find or load main class A 

przypadek rozkazuję java cp/home/gość/roboczy/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) 

================ ===== pełna treść mojego kodu ====================================== java część. Ścieżka jest /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 część. lewa część jest domyślna.

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 

inne części mogą być pomocne w rozwiązaniu.

  • drukuje "/ usr/java/bin". istnieje link symboliczny.
  • Moja lokalizacja jdk to /usr/java/jdk1.7.0_21. wewnątrz ./bin każdy kod działa dobrze.
  • Nie dotknąłem /root/.bash_profile. Właśnie edytowałem/etc/profile.

Dzięki takiego zainteresowania. nawet jeśli się nie domyśli. twoja pomoc bardzo mnie uzdrowiła: D Jeszcze raz dziękuję.

+0

Czy można sprawdzić java -version i javac - wersja z konsoli? – prasanth

+0

@prasanth Tak, działa dobrze i pokazuje właściwą wiadomość. Obecnie używam wersji 1.7.0_19. dziękuję za pytanie –

+0

Czy możesz opublikować kompletny ślad stosu twojego błędu? – prasanth

Odpowiedz

2

Stworzyłem folder o nazwie w/home/Prasanth i kopiowane swój kod plik o nazwie A.java. Skompilowałem z/home/prasanth jako javac a/A.java i uruchomiłem javac a.A. Mam wyjścia jak

a! 
+0

Tak, to normalne, niestety z wyjątkiem mojej. i całkowicie wyczerpany: -

+0

miałeś rację.Musię użyć polecenia java nie w folderze, ale jego folder nadrzędny, oznacza 'src'. Wczoraj był tak podkreślił, więc nie przetestował poprawnie , Myślę, dziękuję jeszcze raz: D –

+0

Ale nadal nie wiem, dlaczego nie mogę wykonać w folderze pakietu. Jeśli masz jakiś pomysł, po prostu daj mi znać ^^ –

6

Instrukcje:

  1. kliknąć na ikonę „Terminal” w panelu na pulpicie, aby otworzyć okno terminala i dostęp do wiersza poleceń.
  2. Wpisz polecenie "which java", aby znaleźć ścieżkę do pliku wykonywalnego Java .
  3. Wpisz polecenie "su -", aby zostać użytkownikiem root.
  4. Wpisz polecenie "vi /root/.bash_profile", aby otworzyć plik "bash_profile" w edytorze tekstu Vi. Możesz zamienić "vi" na preferowany edytor tekstu na .
  5. Wpisz "export JAVA_HOME =/usr/local/java /" u dołu pliku. Zamień "/ usr/local/java" na lokalizację znalezioną w kroku drugim.
  6. Zapisz i zamknij plik "bash_profile".
  7. Wpisz polecenie "exit", aby zamknąć sesję root.
  8. Wyloguj się z systemu i zaloguj ponownie.
  9. Wpisz polecenie "echo $ JAVA_HOME", aby upewnić się, że ścieżka została ustawiona prawidłowo .

set java_home in centos

+0

Zrobiłem to co napisałem, ale po tym (włączając w to restart i ponownie zalogowany), kiedy wpisuję echo $ JAVA_HOME, nic nie pokazuje. Ale sytuacja uległa zmianie. na przykład, nie potrzebuję już opcji -cp, dziękuję za to: D –

+0

całkowicie pracował dzięki broski – jemiloii

1

Wydaje się, że nie masz żadnych problemów ze zmiennych środowiskowych.

Kompilacja pliku z src z

javac a/A.java

Następnie uruchomić program jako

java a.A

+0

[root @ localhost a] # javac a/A.java javac: plik nie znaleziony: aAjava Użycie: javac użyj -help, aby wyświetlić listę możliwych opcji –

+0

Myślę, że to nie jest właściwa praca. Mam na myśli część javac. –

+0

Spróbuj tego 'javac \' znajdź * -name '* .java' \ '' od src – prasanth

0

musiałem zmienić /etc/profile.d/java_env.sh, aby wskazać nową drogę, a następnie wylogować/login.

31

Szukaj here dla CentOS jre zainstalować wszystkich użytkowników:

Najprostszym sposobem, aby ustawić zmienną środowiskową w CentOS jest użycie eksportu jak w

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

$> export PATH=$PATH:$JAVA_HOME 

Jednak zmienne ustawione w taki są przejściowe, tzn. znikną w momencie wyjścia z powłoki. Oczywiście nie jest to pomocne przy ustawianiu zmiennych środowiskowych, które muszą się utrzymywać nawet po ponownym uruchomieniu systemu. W takich przypadkach należy ustawić zmienne w profilu całego systemu. W CentOS (używam wersji 5.2), folder /etc/profile.d/ jest zalecanym miejscem do dodawania dostosowań do profilu systemu. Na przykład podczas instalacji Sun JDK może być konieczne ustawienie zmiennych środowiskowych JAVA_HOME i JRE_HOME. W tym przypadku: Utwórz nowy plik o nazwiejava.sh

vim /etc/profile.d/java.sh 

W tym pliku zainicjować potrzebne zmienne Środowisko

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 

Teraz po ponownym uruchomieniu urządzenia, zmienne środowiskowe w java .sh zostanie automatycznie zainicjalizowany (checkout/etc/profile, jeśli jesteś ciekawy jak ładowane są pliki w /etc/profile.d/).

PS: Jeśli chcesz, aby załadować zmienne środowiskowe w ramach java.sh bez konieczności ponownego uruchamiania urządzenia, można użyć polecenia source jak w:

$> source java.sh 
+0

Dzięki człowieku. Działaj jak bryzę. Dodałem do java.sh t i skopiuj to samo w linii poleceń, które faktycznie umożliwiają to od razu. – Ammad