De exemplu, clasa PrimaAplicatie va fi editată sub forma unui fișier de text cu numele PrimaAplicatie.java. Este preferabil să puneți acest fișier într-un subdirector separat. De exemplu puteti crea un subdirector numit javaLab, în care să creați un alt subdirector numit sapt1, în care sa puneți fișierul PrimaAplicatie.java. |
Pentru crearea fișierului se va folosi un editor de text simplu, care generează numai text neformatat, de exemplu "Notepad" daca lucrați sub Windows sau sub Linux cu WinLinux99, respectiv "Text Editor" sau "Advanced Editor", daca lucrați sub Linux cu KDE.
De exemplu, pentru a compila fișierul care conține clasa PrimaAplicatie
mergeti în subdirectorul în care se găseste fișierul respectiv și dați
comanda javac PrimaAplicatie.java |
După ce ați dat această comandă, veți obține unul din următoarele rezultate:
Exemplu de utilizare corectă Sa considerăm ca am creat corect fișierul sursă PrimaAplicatie.java, după care dăm comanda javac PrimaAplicatie.java Constatăm că pe ecran nu apare nici un mesaj de eroare, ci apare din nou promptul sistemului de operare. Dacă dăm acum comanda dir constatăm că în lista de fișiere care se afișează apar: PrimaAplicatie.class PrimaAplicatie.java Dintre acestea, PrimaAplicatie.java este fișierul sursă editat de noi, în timp ce PrimaAplicatie.class este fișierul de cod de octeti rezultat în urma compilării. |
Exemplul 1 de eroare Considerăm că, după ce ați creat fișierul sursă PrimaAplicatie.java, dați comanda jamac PrimaAplicatie.java în care numele compilatorului este introdus greșit (jamac în loc de javac). Ca efect, veți obtine un mesaj prin care se arată că cuvantul jamac nu este o comandă corectă (nu este numele unei comenzi interne a sistemului de operare sau numele unui program executabil), de exemplu: jamac: command not found |
|
Exemplul 2 de eroare Să considerăm acum că numele fișierului sursă este introdus greșit, de exemplu: javac PimaAplicatie.java În acest caz, mesajul de eroare este can't read: PimaAplicatie.java adică "nu pot citi: PimaAplicatie.java", ceeace înseamnă că un astfel de fișier nu există în directorul curent. |
|
Exemplul 3 de eroare Să urmărim ce se întâmplă dacă introducem comanda javac PrimaAplicatie în care numele fișierului este corect, dar lipșeste extensia. În acest caz, obtineți următorul mesaj: PrimaAplicatie is an invalid option or argument. usage: javac <options> <source files> urmat de o lista de opțiuni. Aceasta înseamnă că nu s-a respectat sintaxa comenzii, care cere ca comanda javac să fie urmată (eventual) de una sau mai multe opțiuni din lista dată, după care trebuie să apară numele fișierului (fișierelor) sursă care trebuie compilate. Aceste nume de fișiere trebuie sa conțină obligatoriu extensia java. |
|
Exemplul 4 de eroare Să considerăm acum că fișierul sursă editat de noi conține erori. Un exemplu este fișierul PrimaAplicatie1.java, care are următorul conținut:
PrimaAplicatie1.java:3: No variable ont defined in class Java.lang.System System.ont.pintln("Prima noastra aplicatie a reusit!"); ^ Acest mesaj se interpretează astfel: în fișierul PrimaAplicatie1.java, linia 3, în locul marcat mai jos prin ^, apare variabila ont, care nu există în clasa System din pachetul (biblioteca) java.lang. Într-adevar, eroarea constă în faptul că apare ont în loc de out. Observăm că a fost reprodusa linia din program în care apare eroarea și s-a marcat prin ^ locul apariției erorii. Dacă dăm comanda dir, constatam că în directorul
curent nu a apărut clasa PrimaAplicatie1.class. Făcând
corecția în fișier și compilând din nou, constatăm că nu mai apare nici
un mesaj de eroare, deci compilatorul nu a mai sesizat nici o eroare și
a creat fișierul care conține codul de octeți corespunzător. |
|
Exercițiu Încercați să faceți și alte modificări în programul sursă și să constatați ce erori apar la compilare. De exemplu:
|
Exemplul 1 Considerăm că a reușit compilarea fișierului corect PrimaAplicatie.java și s-a obținut astfel fișierul PrimaAplicatie.class, după care se dă comanda java PrimaAplicatie Ca rezultat, pe ecran apare textul Prima noastra aplicatie a reusit! |
Exemplul 2 Să dăm acum comanda java PimaApicatie în care numele clasei este dat greșit. Ca rezultat, obținem mesajul de eroare Exception in thread "main" java.lang.NoClassDefFoundError: PimaApicatie Acest mesaj arată că nu s-a găsit definiția clasei PimaAplicatie (Eroarea constatată se deduce din numele acesteia: NoClassDefFoundError provine de la "no class definition found error", adica nu a fost găsită definiția clasei PimaApicatie. |
Exemplul 3 Să considerăm acum că am eliminat erorile de compilare din fișierul PrimaAplicatie1.java și am obținut fișierul PrimaAplicatie1.class, dar că metoda main a rămas fără modificatorii public static. Am arătat că lipsa acestor modificatori nu dă eroare de compilare. Dând acum comanda java PrimaAplicatie1 se obține mesajul de eroare Exception in thread "main" java.lang.NoSuchMethodError: main "No such method" se traduce prin "nu exista o astfel de metoda". Urmeaza două puncte și numele metodei care nu există: main. Noi știm că, în realitate, în clasa PrimaAplicatie1 exista o metodă numita main, numai că nu este cea pe care o caută interpretorul java pentru a pune aplicația in execuție: acesta caută metoda public static void main(String args[]) care, în această clasă, nu există. |