Problemi con Eclipse: Access restriction

DOMANDA:

Ho provato ad importare un progetto nel mio workspace, ma ottengo questo errore in Eclipse:


Access restriction:
The type TerminalFactory is not accessible due to restriction on required library C:\Program Files\Java\jre6\lib\rt.jar



Come posso risolverlo?


RISPOSTA:

Un errore di questo tipo rientra nel seguente errore generico:
"Access restriction: 'NomeClasse' is not accessible due to restriction on required library 'PathDellaLibreria'";

E' un messaggi di errore che può verificarsi mentre si sviluppano progetti Java all'interno dell'IDE Eclipse. Il messaggio è autoesplicativo, infatti ci avvisa di alcune classi che non vengono caricate nel progetto poiché sono state applicate delle restrizioni su di esse.

Per rimuovere queste restrizioni dobbiamo modificare alcune opzioni sul progetto:

click destro sul progetto -> Build Path -> Configure Build Path -> selezioniamo il tab Libraries

Java Build Path

a questo punto in sequenza:
1. selezioniamo JRE System Library
2. click su Remove
3. Add Library
4. selezioniamo JRE System Library
5. Workspace default JRE
6. Finish

Clicchiamo OK e il nostro problema dovrebbe essere risolto (in caso provare a fare anche un clean e una nuova build del progetto).



PROCEDURA ALTERNATIVA (sconsigliata):

Qualora la prima procedura non dovesse funzionare potremmo aggirare il problema modificando questi altri settaggi:

click destro sul progetto -> Properties -> Java Compiler -> Errors/Warnings -> spuntate Enable project specific settings

oppure per tutti i progetti presenti in Eclipse:

dal menù Window -> Preferences -> Java -> Compiler -> Errors/Warnings

In entrambi i casi vi troverete di fronte questo pannello di opzioni:

Errors/Warnings - Forbidden reference (access rules)


Individuate l'opzione "Forbidden reference (access rules)" all'interno della sezione "Deprecated and restricted API". Questa opzione è responsabile della gestione delle regole di accesso all'interno di Eclipse. Come impostazione predefinita abbiamo "Error", che causa il problema che stiamo cercando di risolvere (perché non permette di accedere alle classi con restrizioni). Selezionando una delle altre due opzioni ("Warning" o "Ignore") potremo continuare a sviluppare il nostro progetto.

Nota: come già accennato, la seconda soluzione non risolve realmente il problema ma lo aggira e, pertanto, è sconsigliata. Le opzioni "Warning" e "Ignore" si limiteranno a nascondere il possibile problema nel progetto permettendogli di utilizzare qualsiasi classe ignorando le regole di accesso predefinite.


Commenti

Post popolari in questo blog

Arrotondamento e troncamento in Java

Eclipse: Shortcuts (scorciatoie) da tastiera

Strutture dati: List, Set, Map

Creare un eseguibile Java