[RISOLTO] JSP - Referenziare classe java in default package

di charlesmm il
2 risposte

Ciao a tutti,

sto lavorando su un progetto già esistente dove sono state definite delle classi java nel package di default (quindi senza dichiarazione) e mi servirebbe istanziare una di queste classi in una JSP.

Se provo a farlo ottengo l'errore “NomeClasse cannot be resolved to a type”.

Ho letto in rete che dalla versione java 1.5 non è più possibile eseguire l'import di una classe nel package di default e che queste classi possono essere utilizzate solo da classi del package di default.

Siccome non ho possibilità di modificare il progetto e spostare le classi in un altro package, c'è comunque un modo per poterle utilizzare?

Grazie, ciao.

MM

2 Risposte

  • Soluzione 1: chiedi a chi mantiene quel progetto di ristrutturarlo, andando ad inserire quelle classi in un package (a lui non cambia nulla, se non un briciolo di refactoring dove serve)

    Soluzione 2: spostale tu dentro ad un package (con il refactoring dove serve)

    Soluzione 3: crea un package come ti pare, fai una copia delle classi dentro a quella directory e modifica l'intestazione dei file in modo da rispecchiarne la struttura di package: ora puoi usare le classi dentro al tuyo package.

    Se nessuna delle soluzioni sopra indicate è fattibile, allora non ti rimane che farti del male con la reflection:

    // Supponendo che la tua classe si chiami "TuaClasse",
    // che fornisca un metodo chiamato "tuoMetodo", che riceve come parametro
    // un intero e che restituisca un Double
    
    Class tuaClasse = Class.forName("TuaClasse");
    Method tuoMetodo = tuaClasse.getMethod("tuoMetodo", Integer.class);
    
    // Invoco il metodo passandogli il valore intero 5
    Double retValue = (Double) tuoMetodo.invoke(tuaClasse.newInstance(), 5);

    Ma, sinceramente, nei tuoi panni non vorrei trovarmi a gestire il tutto con la reflection.

  • Credo che la mia unica soluzione sia la reflection. Tanto questo approccio mi serve solo per “studiare” le classi ed eseguire piccoli test.

    Grazie mille per l'aiuto.

Devi accedere o registrarti per scrivere nel forum
2 risposte