Erreur "Cannot find symbol" en java

Résolu/Fermé
kasaix Messages postés 4 Date d'inscription samedi 9 juillet 2022 Statut Membre Dernière intervention 10 juillet 2022 - 9 juil. 2022 à 12:07
kasaix Messages postés 4 Date d'inscription samedi 9 juillet 2022 Statut Membre Dernière intervention 10 juillet 2022 - 10 juil. 2022 à 02:04

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());

    }
}
A voir également:

2 réponses

KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 3 015
9 juil. 2022 à 13:00

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

0
kasaix Messages postés 4 Date d'inscription samedi 9 juillet 2022 Statut Membre Dernière intervention 10 juillet 2022
9 juil. 2022 à 14:18

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

0
KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 3 015
9 juil. 2022 à 15:00

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

0
kasaix Messages postés 4 Date d'inscription samedi 9 juillet 2022 Statut Membre Dernière intervention 10 juillet 2022 > KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024
9 juil. 2022 à 15:18

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.

0
KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 3 015 > kasaix Messages postés 4 Date d'inscription samedi 9 juillet 2022 Statut Membre Dernière intervention 10 juillet 2022
9 juil. 2022 à 17:42

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]
0
kasaix Messages postés 4 Date d'inscription samedi 9 juillet 2022 Statut Membre Dernière intervention 10 juillet 2022 > KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024
10 juil. 2022 à 02:04

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.

0