Erreur "Cannot find symbol" en java
Résolukasaix Messages postés 4 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
J'ai un problème au moment de la compilation où la machine indique:
ToDoList.java:3: error: package miniApp.event does not exist
import miniApp.event.Event;
^
symbol: class Event
location: class ToDoList
ToDoList.java:7: error: cannot find symbol
Event l1 = new Event();
symbol: class Event
location: class ToDoList
Il m'est impossible de trouver d'où provient l'erreur étant donné que le package miniApp.event.Event est bien existant.
La classe Event:
package miniApp.event; import java.util.*; public class Event { // Scanner prenant l'input private Scanner scan = new Scanner(System.in); // Tableau private ArrayList<String> listDebHour = new ArrayList<String>(); private ArrayList<String> listFinHour = new ArrayList<String>(); private ArrayList<String> listEvent = new ArrayList<String>(); private String event, debHours, finHours; private String convFin = finHours; private Boolean verif; /************************************ * Accesseurs et mutateurs d'objets * ***********************************/ public ArrayList<String> getListDebHour() { return listDebHour; } public ArrayList<String> getListFinHour() { return listFinHour; } public ArrayList<String> getListEvent() { return listEvent; } public int getDebHours() { // Conversion de string à int int deb = Integer.parseInt(debHours); return deb; } public int getFinHours() { // Conversion de string à int int fin = Integer.parseInt(finHours); return fin; } /*********************************** * Constructeur de la classe Event * **********************************/ public Event() { // Entrée des heures de début et de fin de l'évènement System.out.print("Entrez l'heure de debut: "); debHours = scan.nextLine(); System.out.print("Entrez l'heure de fin: "); finHours = scan.nextLine(); // Vérification du bon format de l'heure de début et de fin verif = verifHours(getDebHours(), getFinHours()); if (!verif) { System.out.println("Entree invalide, l'heure de fin est automatiquement superieure a l'heure de debut"); int deb = Integer.parseInt(debHours); int fin = Integer.parseInt(finHours); fin = deb + 1; convFin = Integer.toString(fin); } else { convFin = finHours; } // Entrée de l'identifiant de l'évènement System.out.printf("Entrez l'evenement pour %sh-%sh: ", debHours, convFin); event = scan.nextLine(); // Ajout des éléments aux listes correspondantes listDebHour.add(debHours); listFinHour.add(convFin); listEvent.add(event); } /******************************************************************************* * Vérification de la logique de l'heure de début par rapport à l'heure de fin * ******************************************************************************/ public Boolean verifHours(int deb, int fin) { // Renvoie true si l'heure de début < l'heure de fin, sinon renvoie false if (deb > fin || deb < 0 || fin < 0 || deb == fin) { return false; } else { return true; } } }
La classe principale ToDoList:
package miniApp; import miniApp.event.Event; public class ToDoList { public static void main(String[] args) { Event l1 = new Event(); System.out.println(l1.getListDebHour()); System.out.println(l1.getListFinHour()); System.out.println(l1.getListEvent()); } }
- Error cannot find symbol java
- Waptrick java football - Télécharger - Jeux vidéo
- Jeux java itel - Télécharger - Jeux vidéo
- Eclipse java - Télécharger - Langages
- Java apk - Télécharger - Langages
- Waptrick java voiture - Télécharger - Jeux vidéo
2 réponses
Bonjour,
Quelle est la commande que tu as utilisé pour arriver à ce résultat ?
Normalement tu devrais faire :
javac miniApp/event/Event.java miniApp/ToDoList.java
puis :
java miniApp.ToDoList
La confiance n'exclut pas le contrôle
Bonjour,
j'utilise directement la commande d'éxecution "java cheminDuFichier.java" qui compile à la volée et cette façon a toujours fonctionné mais cette fois-ci non. De plus, je ne vois pas vraiment d'erreur dans mon code.
Arborescence des fichiers
| miniApp
| --- ToDoList.java
| | event
| | --- Event.java
IDE utilisé:
Visual Studio Code
Java:
Jdk 17
j'utilise directement la commande d'éxecution "java cheminDuFichier.java" qui compile à la volée et cette façon a toujours fonctionné mais cette fois-ci non.
Dans la documentation c'est bien précisé que cette méthode ne fonctionne que pour un seul fichier.
https://docs.oracle.com/en/java/javase/17/docs/specs/man/java.html#java-command-line-argument-files
java [options] source-file [args ...]
source-file
Only used to launch a single source-file program. Specifies the source file that contains the main class when using source-file mode. See Using Source-File Mode to Launch Single-File Source-Code Programs
Pour le cas général il faut se rapporter aux commandes que j'ai indiqué avec la commande javac qui compile les fichiers .java en .class et la commande java qui exécute les fichiers .class
Je comprends bien mais mon problème ne vient probablement pas d'une erreur de commande car sur les mêmes fichiers, il y a 2 jours, ceux-ci se lançaient très bien. Dans le doute, j'ai essayé en compilant les fichiers et les éxecutant avec les mêmes commandes que vous avez échangé. Mais rien n'y fait.
Ce qui a changé entre temps, c'est que j'avais incorporé du code graphique avec la lib awt et swing. Et cette erreur est survenue au moment d'incorporer le SwingUtilities.invokeLater()[...]. Du coup j'ai effacé tous les morceaux de code graphique et depuis ce problème persiste.
Je viens de tester sur mon PC, ton code fonctionne et toutes les commandes que j'ai donné sont les bonnes, donc ça devrait fonctionner, voici le détail de mon invites de commandes :
G:\workspace> java -version java version "17.0.3.1" 2022-04-22 LTS Java(TM) SE Runtime Environment (build 17.0.3.1+2-LTS-6) Java HotSpot(TM) 64-Bit Server VM (build 17.0.3.1+2-LTS-6, mixed mode, sharing) G:\workspace> javac --version javac 17.0.3.1 G:\workspace> tree /F Structure du dossier pour le volume G Le numéro de série du volume est 1234-5678 G:. └───miniApp │ ToDoList.java │ └───event Event.java G:\workspace> javac miniApp/event/Event.java miniApp/ToDoList.java G:\workspace> tree /F Structure du dossier pour le volume G Le numéro de série du volume est 1234-5678 G:. └───miniApp │ ToDoList.class │ ToDoList.java │ └───event Event.class Event.java G:\workspace> java miniApp.ToDoList Entrez l'heure de debut: 8 Entrez l'heure de fin: 15 Entrez l'evenement pour 8h-15h: cours [8] [15] [cours]
Merci pour ta réponse détaillée. Après quelques essaies, j'ai réussi à comprendre d'où provenait mon erreur. J'utilisais le chemin "java ToDoList.java" en étant dans le répertoire miniApp au lieu de "java miniApp.ToDoList" dans le répertoire src avec un sous-répertoire miniApp. Enfin du moins j'ai réussi à lancer comme ça.