Ich habe mein jdk in/usr/Java/entpackt.
und ich füge CLASSPATH, PATH, Java_HOME wie folgt in/etc/profile ein.
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
Und wenn ich eine Java-Datei in /usr/Java/jdk1.0.7_21/bin kompiliere,
es klappt. Aber wenn ich dasselbe für andere Ordner mache, ist dies nicht der Fall.
Es zeigt NoClassDefFoundError an.
Also habe ich ClASSPATH, PATH, Java_HOME per Echo geprüft.
Es zeigt wie unten.
[[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
Ich möchte Java in der Konsole verwenden. Was kann ich in dieser Situation tun?
Danke im Voraus.
PS. Natürlich habe ich source /etc/profile
.
======================================================================================================================================================================================= =
wenn ich Java A befehle (Mein Klassenname ist A).
Error: Could not find or load main class A
wenn ich Java -cp/home/guest/workspace/AAA/src/a/A befehle
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)
======================= Der gesamte Inhalt meines Codes ========================= ===============.... Java-Teil. Pfad ist /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/Profilteil. Der linke Teil ist voreingestellt.
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
andere Teile könnten hilfreich sein, um sie zu lösen.
which Java
druckt "/ usr/Java/bin". Es gibt einen symbolischen Link.Danke für dieses Interesse. obwohl es nicht herausgefunden hat. Ihre Hilfe war für mich eine große Heilung: D Nochmals vielen Dank.
Ich habe einen Ordner mit dem Namen a in/home/prasanth erstellt und den Code in eine Datei namens A.Java kopiert. Ich habe aus/home/prasanth als javac a/A.Java
kompiliert und javac a.A
ausgeführt. Ich habe ausgegeben als
a!
hier nach Centos jre installieren alle Benutzer:
Der einfachste Weg, eine Umgebungsvariable in CentOS festzulegen, ist der Export wie in.
$> export Java_HOME=/usr/Java/jdk.1.5.0_12
$> export PATH=$PATH:$Java_HOME
Variablen, die auf diese Weise festgelegt werden, sind jedoch vorübergehend, d. Offensichtlich ist dies nicht hilfreich, wenn Umgebungsvariablen festgelegt werden, die auch beim Neustart des Systems beibehalten werden müssen .. In solchen Fällen müssen Sie die Variablen innerhalb des systemweiten Profils festlegen. In CentOS (ich verwende Version 5.2) ist der Ordner /etc/profile.d/ der empfohlene Ort, um Anpassungen zum Systemprofil hinzuzufügen .. _ Wenn Sie beispielsweise Sun JDK installieren, müssen Sie möglicherweise Folgendes festlegen die Umgebungsvariablen Java_HOME und JRE_HOME. In diesem Fall: Erstellen Sie eine neue Datei mit dem NamenJava.sh
.
vim /etc/profile.d/Java.sh
Initialisieren Sie in dieser Datei die erforderlichen Umgebungsvariablen.
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
Wenn Sie jetzt Ihren Computer neu starten, werden die Umgebungsvariablen in Java.sh automatisch initialisiert (checkout/etc/profile, wenn Sie wissen möchten, wie die Dateien in /etc/profile.d/ geladen werden).
PS: Wenn Sie die Umgebungsvariablen in Java.sh
laden möchten, ohne die Maschine neu starten zu müssen, können Sie den Quellbefehl wie folgt verwenden:
$> source Java.sh
Anleitung:
which Java
ein, um den Pfad zur Java-ausführbaren Datei zu finden.su -
ein, um Root-Benutzer zu werden.vi /root/.bash_profile
ein, um die bash_profile -Datei des Systems im Vi-Texteditor zu öffnen. Sie können vi durch Ihren bevorzugten Texteditor ersetzen.export Java_HOME=/usr/local/Java/
am Ende der Datei ..__ ein. Ersetzen Sie /usr/local/Java
durch den in Schritt zwei gefundenen Speicherort.exit
ein, um die Stammsitzung zu schließen.echo $Java_HOME
ein, um sicherzustellen, dass der Pfad korrekt festgelegt wurde Es scheint, dass Sie keine Probleme mit den Umgebungsvariablen haben.
Kompilieren Sie Ihre Datei von src mit
javac a/A.Java
Führen Sie dann Ihr Programm als aus
Java a.A
Die Bereitstellung von javac
erfolgt über /etc/alternatives/javac
können Sie Ihrem .bash_profil hinzufügen:
Java_HOME=$(l=$(which javac) ; while : ; do nl=$(readlink ${l}) ; [ "$nl" ] || break ; l=$nl ; done ; echo $(cd $(dirname $l)/.. ; pwd) )
export Java_HOME
Ich musste /etc/profile.d/Java_env.sh ändern, um auf den neuen Pfad zu zeigen, und mich dann abmelden/einloggen.
Führen Sie die folgenden Schritte aus:
export Java_HOME =/usr/lib/jvm/Java-1.8.0-openjdk-1.8.0.171-8.b10.el7_5.x86_64 /
Hinweis - Ich verwende CentOS7 als OS.