Erreur "Cannot find symbol" en java
Résolukasaix Messages postés 4 Statut Membre -
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
- Jeux java itel - Télécharger - Jeux vidéo
- Waptrick java football - Télécharger - Jeux vidéo
- Eclipse java - Télécharger - Langages
- Waptrick java voiture - Télécharger - Jeux vidéo
- Java apk - Télécharger - Langages
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.