[Java EE] Problème visibilité Classe

[Résolu/Fermé]
Signaler
-
 CocoLm -
Bonjour à tous, je fais du Java EE - JSP avec Tomcat

Cela semble être une erreur de base, mais je n'y arrive pas ici. J'informatise un inventaire. J'essaie de lire fichier Excel .xls qui aura le rôle de base de données, chaque ligne créera un objet "Outil" et chaque colonne sera liée à un attribut d'"Outil".
Ce traitement est fait dans le fichier "CommandeOutils.java" ("/WEB-INF/classes/pac/cmd").

private static FileOutputStream fos;
private static Row              row;
private static Cell             cell;
public static Outil[]           outil;

public CommandeOutils(String next) {
    this.next = next;
}

public String execute(HttpServletRequest req) throws Exception
{
    FileInputStream fis = new FileInputStream("C:\\Users\\lomoc\\Desktop\\INVENTAIRE_NOUVEAU_OUTILLAGE.xls");
    Workbook wb = WorkbookFactory.create(fis);
    Sheet sh = wb.getSheet("listing");
    int noOfRows = sh.getLastRowNum();
    for (int i = 1; i < noOfRows; i++)
    {
        if (sh.getRow(i) == null)
        {
            break;
        }
        outil[i] = new Outil(sh.getRow(i).getCell(0).getStringCellValue(), (sh.getRow(i).getCell(1).getStringCellValue()),
                sh.getRow(i).getCell(2).getStringCellValue(), sh.getRow(i).getCell(3).getStringCellValue(),
                sh.getRow(i).getCell(4).getStringCellValue(), sh.getRow(i).getCell(5).getDateCellValue(),
                sh.getRow(i).getCell(6).getDateCellValue(), sh.getRow(i).getCell(7).getBooleanCellValue(),
                sh.getRow(i).getCell(8).getBooleanCellValue(), sh.getRow(i).getCell(9).getDateCellValue(),
                sh.getRow(i).getCell(10).getDateCellValue(), sh.getRow(i).getCell(11).getStringCellValue(),
                sh.getRow(i).getCell(12).getStringCellValue(), sh.getRow(i).getCell(13).getStringCellValue(),
                sh.getRow(i).getCell(14).getStringCellValue(), sh.getRow(i).getCell(15).getDateCellValue(),
                sh.getRow(i).getCell(16).getBooleanCellValue(), sh.getRow(i).getCell(17).getBooleanCellValue());
    }

    req.setCharacterEncoding("UTF-8");
    req.getServletContext().getRequestDispatcher( "/WEB-INF/outils.jsp" );
    return next;
}


Ma classe Outil défini l'objet du même nom ("/WEB-INF/classes/pac/bdd/beans").

package pac.bdd.beans;

import java.util.Date;

public class Outil
{
    private String  designation;
    private String  numInterne;
    private String  numSerie;
    private String  marque;
    private String  classement;
    private Date    dateAchat;
    private Date    dateFinDeVie;
    private boolean verifInterne;
    private boolean verifExterne;
    private Date    derniereVerification;
    private Date    prochaineVerification;
    private String  observation;
    private String  utilisateur;
    private String  dateSortie;
    private String  utilisateurPrecedent;
    private Date    dateRetour;
    private boolean conforme;
    private boolean nonConforme;

    public Outil(String designation, String numInterne, String numSerie, String marque,
                 String classement, Date dateAchat, Date dateFinDeVie, boolean verifInterne,
                 boolean verifExterne, Date derniereVerification, Date prochaineVerification,
                 String observation, String utilisateur, String dateSortie, String utilisateurPrecedent,
                 Date dateRetour, boolean conforme, boolean nonConforme)
    {
        this.designation = designation;
        this.numInterne = numInterne;
        this.numSerie = numSerie;
        this.marque = marque;
        this.classement = classement;
        this.dateAchat = dateAchat;
        this.dateFinDeVie = dateFinDeVie;
        this.verifInterne = verifInterne;
        this.verifExterne = verifExterne;
        this.derniereVerification = derniereVerification;
        this.prochaineVerification = prochaineVerification;
        this.observation = observation;
        this.utilisateur = utilisateur;
        this.dateSortie = dateSortie;
        this.utilisateurPrecedent = utilisateurPrecedent;
        this.dateRetour = dateRetour;
        this.conforme = conforme;
        this.nonConforme = nonConforme;
    }

    /*Hidden Getters & Setters*/
}


Dans outils.jsp je fais boucler mon tableau d'Outils pour tous les afficher sur la page, je compile manuellement (même résultat qu'après avoir recompilé avec Intellij) et voici ces erreurs sur lesquelles je bloque, j'ai lu beaucoup de sujets mais le contexte Java EE rend la chose moins commune et plus compliquée pour moi. Je ne sais pas si c'est un problème de compilation, de package, d'import, de placement de fichier dans arborescence..

 C:\Users\lomoc\Cours\S4\JSP\webapps\V4_2\WEB-INF>javac classes\pac\cmd\*.java
classes\pac\cmd\CommandeOutils.java:9: error: package pac.bdd.beans does not exist
import pac.bdd.beans.Outil;
^
classes\pac\cmd\CommandeOutils.java:19: error: cannot find symbol
public static Outil[] outil;
^
symbol: class Outil
location: class CommandeOutils
classes\pac\cmd\CommandeOutils.java:37: error: cannot find symbol
outil[i] = new Outil(sh.getRow(i).getCell(0).getStringCellValue(),
(sh.getRow(i).getCell(1).getStringCellValue()),
^
symbol: class Outil
location: class CommandeOutils
3 errors


Arborescence des fichiers : https://image.ibb.co/bNxZ4S/Project_Tree.jpg

Merci d'avance

1 réponse

Messages postés
16392
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
6 septembre 2021
2 872
Bonjour,

Ton seul problème c'est la compilation ?

javac classes\pac\cmd\*.java
: ici tu ne compiles que le package pac.cmd, mais tu ne lui as pas précisé où il pouvait trouver les classes pac.bdd.beans que tu importes, le mieux serait de les compiler en même temps.
Quant aux librairies (poi et postgresql) il faudra aussi les ajouter au classpath à la compilation, sinon il ne sait pas où aller chercher les classes qui correspondent.

À tester :
javac -cp lib/poi.jar;lib/poi-ooxml-3.5-FINAL.jar;postgresql-8.4-703.jdbc4.jar classes/pac/*.java classes/pac/bdd/beans/*.java classes/pac/cmd/*.java


Remarque : quand on commence à faire du Java EE, il faut utiliser les outils qui vont avec. Ecrire à la main la commande de compilation, ça va rapidement devenir ingérable, sans parler après de l'exécution du serveur.
Tu devrais regarder Débuter avec Maven et Application Web JSP/Jetty avec Maven (+ un exemple de code).
Merci d'avoir pris le temps de m'apporter cette réponse claire.
Malheureusement, je suis assidu, et c'est comme ça que j'ai appris lors de mon DUT Informatique, je suis aujourd'hui en stage. Les librairies je les avait importé directement dans mes variables d'environnement, du coup avec la même commande sans les librairies, la compilation s'est faite, j'ai des erreurs mais bien autre chose, je te remercie, je vais voir si Maven ne prend pas trop de temps à apprendre. Encore merci, bonne journée.