Corsi on-line

Errori comuni nell’esecuzione di file Java

In questo post analizzeremo alcuni errori comuni che potrebbero verificarsi durante l’esecuzione di file Java, per ciascuno degli errori descritti verrà poi proposta una possibile interpretazione, risalendo quindi alle cause che potrebbero aver portato al suo verificarsi, e quella che dovrebbe essere (almeno in teoria e nella maggior parte dei casi) la soluzione corretta per ottenere il comportamento desiderato dai comandi utilizzati.

Java LogoUn primo caso da analizzare riguarda la ricezione del messaggio seguente dopo l’invio dell’istruzione java NomeFile tramite linea di comando:

Exception in thread "main" java.lang.NoSuchMethodError: main

Ciò in pratica accade quando il programma non contiene il metodo main o quando quest’ultimo non viene dichiarato correttamente; si consiglia quindi di controllare che nel sorgente di NomeFile.java si trovi anche il metodo main dotato del seguente header:

public static void main(String[] args)

Una seconda tipologia di errore, anche questa particolarmente frequente, si verifica quando lanciando l’istruzione precedentemente descritta viene restituito il seguente messaggio:

exception in thread "main" java .lang.UnsupportedClassVersionError:NomeFile (unsupported major.minor version 49.0)
at java.lang.ClassLoader.define(Class0(Native Method)
at java.lang.Class........

Tale malfunzionamento è dovuto in genere al fatto che la compilazione del file NomeFile.class è stata effettuata con una release di javac successiva a quella di java; meglio quindi verificare che nel proprio sistema sono presenti più installazioni di Java e, in caso di esito positivo della ricerca, disinstallare quella meno recente.

Si analizzi infine un terzo caso concreto, quello in cui lanciando l’istruzione java NomeFile.java tramite Prompt o Terminale, si ottenga in output il seguente messaggio:

Exception in thread "main" java.lang.NoClassDefFoundError: NomeFile/java

Ricordate infatti che l’estensione del file non dovrà essere specificata quando si utilizza il comando java, motivo per il quale la nostra istruzione dovrà essere invece java NomeFile.

Post correlati
I più letti del mese
Tematiche