Java-koontipolun asetus

Tässä osassa kerrotaan, miten Java-koontipolku asetetaan.  Koontipolku on luokkapolku, jota käytetään Java-projektin (IJavaProject) luontiin.

Luokkapolku on yksinkertaisesti taulukko luokkapolun merkinnöistä (IClassPathEntry), jotka kuvaavat käytettävissä olevat tyypit.  Tyypit voivat näkyä lähdekielisessä tai binaarisessa muodossa, ja merkintöjen järjestys polulla määrittää tyyppien tulkinnan noutojärjestyksen luonnin yhteydessä.

Java-koontipolku vaikuttaa Java-projektin elementin rakenteeseen.  Voit kysellä projektista sen pakettifragmentin juuria (IPackageFragmentRoot).  Jokainen luokkapolun merkintä on määritetty vastaamaan ainakin yhtä pakettifragmentin juurta, joista jokaisessa on puolestaan joukko pakettifragmentteja.

Tämä koontipolun kuvaus ei käsittele Java-ohjelmatiedostojen polkua, jonka voi määrittää erikseen koontipolusta.  (Lisätietoja ajonaikaisesta luokkapolusta on ohjeaiheessa Java-koodin ajo.)

Koontipolun muuttaminen

Projektin koontipolkua voi muuttaa ohjelmallisesti käyttämällä projektin Java-elementissä setRawClasspath -metodia.  Seuraava koodi asettaa projektin resurssin luokkapolun:

	IProject project = ... // hae jokin projektin resurssi
	IJavaProject javaProject = JavaCore.create(project);
	IClasspathEntry[] newClasspath = ...;
	javaProject.setRawClasspath(newClasspath, someProgressMonitor);
	

(Huomautus:  Termin "muotoilemattoman (raw)" luokkapolun käyttö painottaa sitä seikkaa, että mitään merkintöjen sijainnin kuvaukseen käytettyjä muuttujia ei ole tulkittu.)

Java-koontipolku tallennetaan tiedostoon '.classpath' projektin tiedostorakenteeseen.  Tämän tiedoston tarkoituksena on tuottaa tapa, jolla Java-koontipolun asetukset voidaan määrittää yhteiskäyttöön toisten kanssa jonkin lähdekoodisäilön avulla. Tätä tiedostoa ei pidä milloinkaan muokata manuaalisesti, sillä se voi vioittua.

Luokkapolun merkinnät

Luokkapolun merkinnät voidaan määrittää factory-metodeilla, jotka on määritetty JavaCore-lisäosassa.  Luokkapolun merkinnät voivat viitata mihin tahansa seuraavista objekteista:

Poissulkemismallit

Luokkapolun lähdemerkinnälle voi osoittaa poissulkemismallin, joka estää tiettyjä lähdekansion resursseja näkymästä luokkapolussa.  Mallia käyttämällä voidaan suodattaa resurssirakenteen tietyt osat pois.  Jokainen poissulkemismallin polku on suhteessa luokkapolkumerkintään ja käyttää mallimekanismia, joka on samankaltainen kuin Ant-apuohjelman malli.  Poissulkemismallien avulla voidaan määrittää sisäkkäisiä lähdekansioita, kunhan ulompi malli sulkee pois sisemmän mallin.

Lisätietoja poissulkemismalleista on ohjeaiheessa getExclusionPatterns.

Java-projektin sovellusohjelmaliittymä isOnClasspath tarkistaa sekä lisäys- että poissulkemismallit, ennen kuin se selvittää, onko tietty resurssi luokkapolussa.

Kommentit:

Lisäysmallit

Luokkapolun lähdemerkinnälle voi osoittaa myös lisäysmallin, joka määrittää eksplisiittisesti luokkapolussa näkyvät resurssit.  Jos poissulkemismalleja ei ole määritetty, lähdemerkintä sisältää kaikki liittyvät tiedostot tämän lähdemerkinnän polusta haarautuvasta resurssirakenteesta. Kun yksi tai usea lisäysmalli määritetään, vain määritetyt resurssirakenteen osat sisällytetään. Jokaisen määritetyn polun on oltava suhteellinen polku, ja se tulkitaan suhteessa tämän lähdemerkinnän polkuun. Tiedostomalleissa erotetaan isot ja pienet kirjaimet. Tiedosto, joka vastaa ainakin yhtä näistä malleista, sisällytetään vastaavaan pakettifragmentin juureen, ellei kyseisen merkinnän yksi tai usea poissulkemismalli sulje sitä pois.

Lisätietoja polkumallien rakenteesta ja semantiikasta on ohjeaiheessa getExclusionPatterns. Jos lisäysmalleja ei ole, tämä vastaa semanttisesti eksplisiittistä lisäysmallia **.

Java-projektin sovellusohjelmaliittymä isOnClasspath tarkistaa sekä lisäys- että poissulkemismallit, ennen kuin se selvittää, onko tietty resurssi luokkapolussa.

Esimerkkejä:

Luokkapolun tulkinta

Koska luokkapolkumuuttujat ja -säilöt mahdollistavat dynaamisesti sidottujen luokkapolkumerkintöjen määrityksen, luokkapolun sovellusohjelmaliittymä erottelee muotoilemattoman ja tulkitun luokkapolun.   Muotoilematon luokkapolku on se, joka on alun perin asetettu Java-projektissa metodilla setRawClasspath, ja sen voi edelleen kysellä pyytämällä projektilta getRawClasspath.  Muotoillun luokkapolun voi kysellä metodilla getResolvedClasspath. Tämä toiminto liipaisee luokkapolun tulkinnassa tarvittavien muuttujien ja säilöjen alustuksen.  Monet Java-mallin toiminnot implisiittisesti aiheuttavat Java-koontipolun tulkinnan.  Esimerkiksi projektin pakettifragmenttijuurten laskenta edellyttää koontipolun tulkintaa.