[Java] La classe principale XXX est introuvable ou n'a pas pu être chargée

Pourquoi ne puis-je pas simplement copier et créer un autre fichier? Même si le fichier de classe a été généré! !!

Créez MyApp.java dans java_lessons / com / dot / myapp. Créez Practice.java en copiant MyApp.java. Écrivez ce que vous voulez essayer dans Practice.java.

J'ai mis la classe externe de MyApp.java dans java_lessons / com / dot / myapp / model et l'ai chargée, mais je veux essayer un code simple sans charger la classe externe, j'ai donc supprimé le package et importé J'ai créé Practice.java.

Et la compilation a fonctionné, mais je ne peux pas l'exécuter.

En essayant de courir

Dans une boucle avec l'erreur La classe principale com.dot.myapp.Practice n'a pas été trouvée ou n'a pas pu être chargée.

Quand je l'ai recherché, j'ai réussi à écrire le PATH, mais j'ai créé un répertoire de test séparé du répertoire java_lessons, déplacé Practice.java, puis compilé et exécuté.

J'ai pensé que ça pouvait être quelque chose à propos de PATH.

Mais je ne sais pas quoi faire.

Hmm, que dois-je faire quand je dis ça? J'aurais aimé qu'il y ait quelqu'un qui puisse poser des questions, mais je ne suis pas autodidacte! Vous pouvez demander sur le net, mais ensuite je veux m'en occuper moi-même!

Processus de résolution

Si vous pouvez énumérer certaines causes possibles pour le moment, si vous examinez chaque cause, vous devriez être pris dans la recherche avec des messages d'erreur similaires! !!

Recherchez la cause en comparant le fichier que vous avez créé avec le fichier source de la copie qui pourrait être exécuté

  1. main semble être une méthode spéciale, c'est donc un fichier séparé, mais est-il étrange que main existe dans la même hiérarchie?
  2. Je l'ai supprimé car je n'utilise pas le package, mais je ne l'utilise pas, mais puis-je l'écrire?
  3. Est-il nécessaire de définir le PATH après tout?
  4. Je me connecte à vagrant avec ssh et l'exécute, mais je ne peux pas lire le fichier exécutable car le fichier ne peut pas être enregistré?
  5. J'utilise Cyberduck pour FTP, mais cela ne fonctionne pas?

Le reste est essai et erreur

1. Action

J'étais profondément dans la hiérarchie de java_lessons, mais j'ai d'abord créé un autre répertoire et je l'ai déplacé.

  1. Créez un dossier de test à côté de java_lessons
  2. Déplacez Practice.java là
  3. Allez tester dans le terminal
  4. Compilez et exécutez
  5. Pourrait être exécuté → Y a-t-il une seule méthode principale dans la même hiérarchie?
  6. Créez un dossier de test / pratique
  7. Déplacer des fichiers
  8. Compilez et exécutez
  9. Je ne peux pas → Il n'y a qu'un seul principal ...
  10. Revenir pour tester
  11. Exécution de la compilation
  12. Terminé → Le problème du répertoire, pas le numéro de
  13. Accédez au répertoire contenant le fichier que vous souhaitez exécuter dans le terminal, puis exécutez
  14. C'est fait! !!

récolte Accédez simplement au terminal, puis exécutez.

Cependant, MyApp d'origine pourrait être fait profondément dans la hiérarchie, non?

Il existe donc un moyen de le faire sans avoir à accéder au terminal puis à l'exécuter.

Alors

2. Action

Je n'utilise pas le package, mais déclarons le package pour le moment!

package com.dot.myapp;

Avec cela au début, le premier répertoire, c'est-à-dire Renvoyez Practice.java dans java_lessons / com / dot / myapp et compilez.

J? ai compris.

récolte Si vous déclarez un package, vous pouvez l'exécuter même si vous êtes profondément dans la hiérarchie. Mais dois-je écrire la classe dans le modèle de répertoire un niveau inférieur même si je ne l'utilise pas?

Expérimentez en déplaçant à nouveau le fichier ici.

Déplacer vers java_lessons / com, déclarer` package com; ʻet exécuter.

l'a fait

récolte S'il se trouve sous le répertoire où se trouve le terminal, écrivez le répertoire de ce fichier dans la déclaration du package!

Votre propre conclusion

Je pense que l'empaquetage est un moyen de gérer des fichiers avec uniquement fonction et de définir en modèle en PHP, mais lors de son exécution, il faut l'écrire lorsqu'il se trouve sous le répertoire où se trouve le terminal. chose.

Votre propre récolte

Il m'est arrivé de trouver une solution au début après avoir énuméré certaines causes, mais je me demande s'il est rapide d'essayer de toute façon différentes choses.

Même si vous recherchez le message d'erreur tel quel, il peut rester bloqué, mais il vaut mieux y réfléchir vous-même et essayer de le résoudre.

Approfondir votre compréhension facilite la liste des causes possibles dans des situations similaires, sinon dans la même situation, ce qui permet une résolution plus rapide!

Quoi qu'il en soit, réfléchissons par nous-mêmes et résolvons-le par nous-mêmes pour accélérer!

Recommended Posts

[Java] La classe principale XXX est introuvable ou n'a pas pu être chargée
Erreur: la classe principale est introuvable ou n'a pas pu être chargée
Si macOS Catalina indique "Erreur: la classe principale XX est introuvable ou n'a pas pu être chargée"
"Erreur: la classe principale XXX est introuvable ou n'a pas pu être chargée" se produit même si la classe principale existe
Erreur java d'aujourd'hui: Erreur: impossible de trouver ou de charger la classe principale
Classe principale Spring-Boot introuvable
L'histoire selon laquelle le servlet n'a pas pu être chargé dans l'application Web Java
ERREUR! Le fichier PID du serveur MySQL est introuvable!
Fichier de classe HttpServletRequest introuvable
Erreur de non-recherche du symbole lors de la nouvelle classe dans un autre fichier Java