J'ai décompressé mon jdk dans/usr/Java /.
et je mets CLASSPATH, PATH, Java_HOME dans/etc/profile comme ci-dessous.
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
Et quand je compile un fichier Java dans /usr/Java/jdk1.0.7_21/bin,
Ça marche. Mais quand je fais la même chose sur un autre dossier, ce n'est pas le cas.
Il affiche NoClassDefFoundError.
J'ai donc vérifié ClASSPATH, PATH, Java_HOME via echo.
Cela se voit comme ci-dessous.
[root@localhost a]# echo $Java_HOME
/usr/Java/jdk1.7.0_21
[root@localhost 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
[root@localhost a]# echo $CLASSPATH
/usr/Java/jdk1.7.0_21/jre/lib/ext:/usr/Java/jdk1.7.0_21/lib/tools.jar
Je veux utiliser Java dans la console, que puis-je faire dans cette situation?
Merci d'avance.
PS. de couse je l'ai source /etc/profile
.
================= Les erreurs auxquelles je suis confronté ======================
quand je commande Java A (le nom de ma classe est A).
Error: Could not find or load main class A
case je commande Java -cp/home/invité/espace de travail/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)
==================== Tout le contenu de mon code ======================== ============== Partie Java. chemin est /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 partie. la partie gauche est la valeur par défaut.
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
d'autres parties pourraient être utiles à résoudre.
which Java
affiche "/ usr/Java/bin". il y a un lien symbolique.Merci pour cet intérêt. même si cela n’a pas été résolu. votre aide m'a beaucoup aidée: D Merci encore.
J'ai créé un dossier nommé a dans/home/prasanth et copié votre code dans un fichier nommé A.Java. J'ai compilé à partir de/home/prasanth en tant que javac a/A.Java
et exécuter javac a.A
. Je suis sortie comme
a!
Rechercher ici pour centos jre installer tous les utilisateurs:
Le moyen le plus simple de définir une variable d'environnement dans CentOS consiste à utiliser export comme dans
$> export Java_HOME=/usr/Java/jdk.1.5.0_12
$> export PATH=$PATH:$Java_HOME
Cependant, les variables ainsi définies sont transitoires, c’est-à-dire qu’elles disparaîtront dès que vous quitterez le Shell. Évidemment, cela n’est pas utile lorsque vous définissez des variables d’environnement qui doivent être conservées, même lorsque le système redémarre. Dans ce cas, vous devez définir les variables dans le profil système. Dans CentOS (version 5.2), le dossier /etc/profile.d/ est l'emplacement recommandé pour ajouter des personnalisations au profil système . Par exemple, lors de l'installation du JDK de Sun, vous devrez peut-être définir les variables d'environnement Java_HOME et JRE_HOME. Dans ce cas: Créez un nouveau fichier appeléJava.sh
vim /etc/profile.d/Java.sh
Dans ce fichier, initialisez les variables d'environnement nécessaires
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
Maintenant, lorsque vous redémarrez votre ordinateur, les variables d'environnement de Java.sh seront automatiquement initialisées (consultez/etc/profile si vous êtes curieux de savoir comment les fichiers de /etc/profile.d/ sont chargés).
PS: Si vous souhaitez charger les variables d'environnement dans Java.sh
sans avoir à redémarrer la machine, vous pouvez utiliser la commande source comme suit:
$> source Java.sh
Instructions:
which Java
pour rechercher le chemin d'accès au fichier exécutable Java su -
pour devenir l'utilisateur root.vi /root/.bash_profile
pour ouvrir le fichier système bash_profile dans l'éditeur de texte Vi. Vous pouvez remplacer vi par Votre éditeur de texte préféré.export Java_HOME=/usr/local/Java/
au bas du fichier . Remplacez /usr/local/Java
par l'emplacement indiqué à l'étape deux.exit
pour fermer la session racine.echo $Java_HOME
pour vous assurer que le chemin d'accès a été défini correctement Il semble que vous n’ayez aucun problème avec les variables environnementales.
Compilez votre fichier de src avec
javac a/A.Java
Ensuite, lancez votre programme en tant que
Java a.A
Je devais changer /etc/profile.d/Java_env.sh pour qu'il pointe vers le nouveau chemin, puis vous déconnecter/vous connecter.
Suivez les étapes suivantes:
exportation Java_HOME =/usr/lib/jvm/Java-1.8.0-openjdk-1.8.0.171-8.b10.el7_5.x86_64 /
Remarque - J'utilise CentOS7 comme système d'exploitation.