Généralement, nous utilisons des outils pour éditer et déboguer du code, tels que Eclipse, Manven, Android Studio, sublime, vim, notepad, notepad, etc.
Lorsque nous créons des fichiers de projet et de classe Java à l'aide d'Eclipse Android Studio, etc., ils ont tous des noms de package. Ils sont compilés et exécutés normalement avec des outils, mais lorsque nous passons à la ligne de commande pour l'exécution :
javac xxx.java
java. xxx
Cela est très probable找不到或无法加载主类
Lorsque nous apprenons Java pour la première fois, le nom du package (package) n'est pas défini dans le fichier de classe. Dans ce cas, faites attention au chemin de classe, et il n'y a fondamentalement aucun problème. Mais lorsque nous utilisons des outils (Eclipse, Android Studio) pour écrire du code, l'emplacement du fichier de code se trouve dans un répertoire séparé par le nom du package Notez qu'il s'agit d'un répertoire physique relatif (com/eagle/app), et il. est indiqué dans le code. Sans le nom du package, il peut être considéré comme un répertoire virtuel (com.eagle.app). Cet article explique principalement la cause de l'erreur et la solution correcte lorsqu'il n'y a pas de problème avec le chemin de classe et la variable d'environnement système PATH.
Le fichier de code est très simple comme suit :
package com.eagle.app; public class MainJava { public static void main(String[] args) { if (args != null) { for (String arg : args) { System.out.println("arg = " + arg); } System.out.println("arg = " + args); } else { System.out.println("args = " + null); } }
Comme indiqué ci-dessus, en prenant Android Studio comme exemple
1 Il y a un répertoire src sous le répertoire du projet. , mais il contient les fichiers de l'ensemble de l'application, pas le répertoire "src" du code ; dans le cas d'Eclipse, le répertoire src est le répertoire de code.
2. C'est le répertoire "src" du code, et il y a un "répertoire" correspondant au nom de notre package com/eagle/app
Pour compiler MainJava, utilisez :
//cd 到app目录 javac MainJava.java
ou
//cd 到eagle 目录 javac app/MainJava.java
ou encore
//cd 到main目录 javac java/com/eagle/app/MainJava.java
Tout va bien. Bien sûr, il peut s'agir de n'importe quel emplacement + répertoire relatif.
Revenons en arrière et expliquons : par rapport au répertoire actuellement exécuté (tel que le répertoire d'applications, le répertoire eagle, le répertoire principal), le chemin physique est un chemin d'ordinateur valide (xxx/xxx/xxx), donc le nom est relatif au chemin physique.
Si quelque chose ne va pas, le chemin doit être erroné.
Remarques : le répertoire de code est déterminé en fonction du répertoire de départ du nom du package lors de la création d'un nouveau fichier de code.
C'est un peu intéressant, Nom du package virtuel. chemin : xxx.xxx.xxx , pas un répertoire séparé par "/", on l'appelle donc un chemin virtuel.
Dans l'image ci-dessus, 2 est le code Java et 1 est le fichier de bytecode généré par la compilation de l'outil. Maintenant, pour exécuter MainJava.class, la commande correcte est :
//cd vers le répertoire principal en 1, et. plus com ou un répertoire inférieur
F:\GSProject>cd javatest\build\classes\java\main F:\GSProject\javatest\build\classes\java\main>java com.eagle.app.MainJava
Remarque : n'apportez pas .class (java com.eagle.app.MainJava.class est incorrect), et n'essayez pas de passer à d'autres répertoires et d'utiliser des répertoires relatifs pour exécuter, car le La commande java reconnaîtra ce qui suit. Le paramètre est le nom du package.
Ce qui suit sont toutes des erreurs
F:GSProjectjavatestbuildclassesjavamain>java com.eagle.app.MainJava.class
Erreur : La classe principale com.eagle.app.MainJava.class est introuvable ou ne peut pas être chargée
F :GSProjectjavatestbuildclassesjava> ;java maincom.eagle.app.MainJava
Erreur : La classe principale maincom.eagle.app.MainJava est introuvable ou ne peut pas être chargée
Bon, maintenant nous déplaçons le répertoire entouré de 1 dans l'image ci-dessus vers le répertoire javatest. Nous exécutons java com.eagle.app.MainJava
F:\GSProject\javatest>java com.eagle.app.MainJava arg = [Ljava.lang.String;@75b84c92
dans le répertoire javatest Le résultat est que l'adresse du paramètre de la fonction principale est affichée normalement. On voit que nous pouvons exécuter notre bytecode à volonté, le mettre sur Linux ou Mac, et faire volontiers ce que nous voulons faire. La structure de répertoires dans
1 est le package com.eagle.app ; assurez-vous que le chemin du fichier javac est **/xxx/xxx/xxx/Name.java** et que le chemin du fichier
java est xxx. .xx.x.Name , n'apporte pas de cours.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!