Kompilácia súborov Java * .class s javac

1. Prehľad

Tento tutoriál predstaví javac nástroj a popisuje, ako ho použiť na kompiláciu zdrojových súborov Java do súborov triedy.

Začneme krátkym popisom súboru javac príkaz, potom preskúmajte nástroj podrobnejšie a preskúmajte jeho rôzne možnosti.

2. The javac Velenie

Pri vykonávaní. Môžeme určiť voľby a zdrojové súbory javac nástroj:

javac [možnosti] [zdrojové súbory]

Kde [možnosti] - označuje možnosti riadiace operácie nástroja a - [zdrojové súbory] označuje jeden alebo viac zdrojových súborov, ktoré sa majú kompilovať.

Všetky možnosti sú skutočne úplne voliteľné. Zdrojové súbory môžu byť priamo špecifikované ako argumenty pre javac príkaz alebo uložený v referenčnom súbore argumentov, ako je opísané neskôr. Všimnite si, že zdrojové súbory by mali byť usporiadané v hierarchii adresárov zodpovedajúcej úplne kvalifikovaným názvom typov, ktoré obsahujú.

Možnosti javac sú rozdelené do troch skupín: štandardná, krížová kompilácia a ďalšia. V tomto článku sa zameriame na štandardné a extra možnosti.

Možnosti krížovej kompilácie sa používajú pre menej častý prípad použitia kompilácie definícií typov oproti implementácii JVM odlišnej od prostredia kompilátora a nebudú sa nimi riešiť.

3. Definícia typu

Začnime predstavením triedy, ktorú použijeme na demonštráciu javac možnosti:

public class Data {List textList = new ArrayList (); public void addText (text reťazca) {textList.add (text); } public List getTextList () {return this.textList; }}

Zdrojový kód je umiestnený v súbore com / baeldung / javac / Data.java.

Upozorňujeme, že v tomto článku používame oddeľovače súborov * nix; na počítačoch so systémom Windows musíme použiť spätné lomítko („\') namiesto lomky („/').

4. Štandardné možnosti

Jedna z najbežnejšie používaných štandardných možností javac príkaz je -d, špecifikovanie cieľového adresára pre vygenerované súbory triedy. Ak typ nie je súčasťou predvoleného balíka, vytvorí sa adresárová štruktúra odrážajúca názov balíka, aby sa zachoval súbor triedy tohto typu.

Poďme vykonať nasledujúci príkaz v adresári obsahujúcom štruktúru uvedenú v predchádzajúcej časti:

javac -d javac-target com / baeldung / javac / Data.java

The javac kompilátor vygeneruje súbor triedy javac-target / com / baeldung / javac / Data.class. Upozorňujeme, že v niektorých systémoch javac automaticky nevytvára cieľový adresár, čo je javac-target v tomto prípade. Preto to možno budeme musieť urobiť manuálne.

Tu je niekoľko ďalších často používaných možností:

  • -cp (alebo -classpath, –Class-path) – určuje, kde možno nájsť typy potrebné na kompiláciu našich zdrojových súborov. Ak táto možnosť chýba a CLASSPATH premenná prostredia nie je nastavená, použije sa namiesto nej aktuálny pracovný adresár (ako to bolo v príklade vyššie).
  • -p (alebo –Modul-cesta) – označuje umiestnenie potrebných aplikačných modulov. Táto možnosť je použiteľná iba pre Java 9 a vyššie - v tomto návode nájdete sprievodcu po systéme modulov Java 9.

Ak chceme vedieť, čo sa deje počas procesu kompilácie, napr. ktoré triedy sa načítajú a ktoré sa kompilujú, môžeme použiť -verbose možnosť.

Poslednou štandardnou možnosťou, ktorú pokryjeme, je súbor argumentov. Namiesto toho, aby ste argumenty odovzdávali priamo javac nástroj, môžeme ich uložiť do súborov argumentov. Názvy týchto súborov, s predponou „@ znak, sa potom použijú ako argumenty príkazu.

Keď javac príkaz narazí na argument začínajúci na „@, interpretuje nasledujúce znaky ako cestu k súboru a rozširuje obsah súboru do zoznamu argumentov. Medzery a znaky nového riadku možno použiť na oddelenie argumentov zahrnutých v takomto súbore argumentov.

Predpokladajme, že máme dva súbory s názvom možnostia typy, v javac-args adresár s nasledujúcim obsahom:

The možnosti spis:

-d javac-target -verbose

The typy spis:

com / baeldung / javac / Data.java

Môžeme zostaviť Údaje zadajte ako predtým podrobné správy vytlačené na konzole vykonaním tohto príkazu:

javac @ javac-args / options @ javac-args / types

Namiesto uchovávania argumentov v samostatných súboroch môžeme ich tiež všetky uložiť do jedného súboru.

Predpokladajme, že existuje súbor s názvom argumenty v javac-args adresár:

-d javac-target -verbose com / baeldung / javac / Data.java

Poďme tento súbor načítať do javac dosiahnuť rovnaký výsledok ako v prípade dvoch samostatných súborov predtým:

javac @ javac-args / argumenty

Všimnite si, že možnosti, ktoré sme si prešli v tejto časti, sú iba tie najbežnejšie. Úplný zoznam noriem javac možnosti, pozrite si tento odkaz.

5. Extra možnosti

Ďalšie možnosti javac sú neštandardné možnosti, ktoré sú špecifické pre aktuálnu implementáciu kompilátora a môžu sa v budúcnosti zmeniť. Preto tieto možnosti nebudeme podrobne rozoberať.

Existuje však možnosť, ktorá je veľmi užitočná a stojí za zmienku, -Xlint. Pre úplný popis toho druhého javac ďalšie možnosti, kliknite na tento odkaz.

The -Xlint voľba nám umožňuje povoliť varovania počas kompilácie. Existujú dva spôsoby, ako určiť túto možnosť v príkazovom riadku:

  • -Xlint - spustí všetky odporúčané varovania
  • -Xlint: kľúč [, kľúč] * - umožňuje konkrétne varovania

Tu sú niektoré z najpríjemnejších -Xlint kľúče:

  • rawtypes - varuje pred použitím surových druhov
  • nezaškrtnuté - varuje pred nekontrolovanými operáciami
  • statický - varuje pred prístupom k statickému členovi od člena inštancie
  • obsadenie - varuje pred zbytočnými obsadeniami
  • sériové - varuje pred serializovateľnými triedami, ktoré nemajú serialversionUID
  • prepadnúť - varuje pred prepadom v a prepínač vyhlásenie

Teraz vytvorte súbor s názvom xlint-ops v javac-args adresár s nasledujúcim obsahom:

-d javac-target -Xlint: rawtypes, nezačiarknuté com / baeldung / javac / Data.java

Pri spustení tohto príkazu:

javac @ javac-args / xlint-ops

mali by sme vidieť rawtypy a nezačiarknuté varovania:

com / baeldung / javac / Data.java: 7: varovanie: [rawtypes] nájdený surový typ: ArrayList List textList = nový ArrayList (); ^ chýbajúce argumenty typu pre generickú triedu ArrayList, kde E je premenná typu: E rozširuje objekt deklarovaný v triede ArrayList com / baeldung / javac / Data.java: 7: varovanie: [neoznačené] nekontrolované prevody List textList = new ArrayList (); ^ povinné: Nájdený zoznam: ArrayList ...

6. Záver

Tento návod prešiel dokumentom javac nástroj, ktorý ukazuje, ako používať možnosti na správu typického procesu kompilácie.

V skutočnosti zvyčajne zostavujeme program skôr pomocou IDE alebo pomocou nástroja na zostavenie, ako na priame spoliehanie sa na to javac. Dôkladné pochopenie tohto nástroja nám však umožní prispôsobiť kompiláciu v pokročilých prípadoch použitia.

Ako vždy, zdrojový kód tohto tutoriálu nájdete na GitHub.


$config[zx-auto] not found$config[zx-overlay] not found