Mitenkähän tuo NetBeans on toteutettu ?
Itseäni ei tyydyttänyt muualla esitetyt vaihtoehdot, miten toteuttaa ifdef - endif javaan.
Mutta asian voisi ehkä ratkaista toisinkin:
JOS NetBeans tekee käännöksensä kutsumalla ulkoista javac -komentorivikääntäjää, silloinhan olisi helppo uudelleennimetä vaikkapa javac -> javac_001, ja tehdä oma ohjelma nimeltä javac, joka:
1. Muuntaa lähdekooditiedostoa siinä olevien ifdef:ien mukaan (ja mahdollisesti varmuuskopioi sen ennen muutoksia)
2. kutsuu alkuperäistä javac:tä, joka siis on uudelleennimetty javac_001:ksi
3. muuntaa lähdekooditiedoston takaisin alkuperäiseksi tai palauttaa siitä tekemänsä varmuuskopion
Tämän idean toteutusmahdollisuuksien selvittämiseksi päätin etsiä omasta pc:stäni javac -nimiset tiedostot.
Koska olen asentanut NetBeansin linuxiin käyttäjätunnuksella mika, niin niitä köytyi 2 kpl:
/home/mika/jdk1.6.0/bin/javac
/home/mika/netbeans-5.5/mobility7.3/_jvm/bin/javac
molemmat samalla md5 -summalla:
b8d1525c8953387161b5ab3e72633e53
Koska tuo Mobility pack 7.3 ei ole netBeansin kiinteä osa, olettaisin NetBeansin käyttävän tätä:
/home/mika/jdk1.6.0/bin/javac
komentorivikääntäjää java -lähdekoodin kääntämiseen.
Niinpä loin hakemiston
/home/mika/jdk1.6.0/bin/backup
ja *siirsin* tuon javac -tiedoston sinne hakemistosta /home/mika/jdk1.6.0/bin/
Kun nyt yritin kääntää NetBeansistä käsin java -lähdekoodia,yllätyin hieman, kun tulos näytti tältä:
"BUILD SUCCESSFUL (total time: 0 seconds)"
odottamani "javac compiler not found" -ilmoituksen sijasta.
Onko tuo kääntäjä siis jotenkin integroitu NetBeansiin, vai miksi sen siirtäminen NetBeansin ulottumattomiin ei estä kääntämistä NetBeansissä ?
Seuraava askel olisi ollut oman ohjelman tekeminen javac -nimelle, ja oma ohjelma olisi alkuvaiheessa vain kutsunut alkup. kääntäjää, ja samalla kirjoittanut parametrit lokitoedostoon myöhempää analysointia varten.
Täytynee vielä kokeilla tuo MobilityPackissa olevan javac:n siirto myös NetBeansin ulottumattomiin, mutta jos sekään ei tehoa, mitä seuraavaksi ?
Netbeans -toteutus ?
1
279
Vastaukset
- Mika0800
Lueskelin juuri NetBeans help -tekstejä, ja niistä löytyi tällaisia:
//#ifdef identifier
//#endif
sekä
//#if expression
//#endif
Nyt kun vielä keksisi, mitä pitää tehdä, jota niitä voisi käyttää näin:
//#ifdef j2me
// Tähän koodia, joka on voimassa vain j2me -ympäristössä
//#endif
//#ifdef j2se
// Tähän koodia, joka on voimassa vain j2se -ympäristössä
//#endif
Eli jos ei NetBeans IDE itse osaa määritellä noita j2me ja j2se, minne ne voi laittaa, ettänuo ifdefit näkevät niiden arvon ?
Outoa muuten sinänsä, että kun luin myös netistä useita googlen löytämiä sivuja aiheesta java ja ifdef, niin niissä lähinnä kommentoidaan tyyliin "jos ei Sun toteuta ifdef:ejä, niin yhteisö sen tulee tekemään, kenties useilla keskenään epäyhteensopivilla tavoilla".
Mutta NetBeans 5.5:ssäne ilmeisesti on jo toteutettu, ja eikös NetBeans ole Sun Microsystemsin tuote, joten ongelmahan on periaatteessa jo ratkaistu.
Joskus näköjään googletus voi johtaa pahasti harhaan !
Ketjusta on poistettu 0 sääntöjenvastaista viestiä.
Luetuimmat keskustelut
Tänään pyörit ajatuksissa enemmän, kun erehdyin lukemaan palstaa
En saisi, silti toivon että sinä vielä palaat ja otetaan oikeasti selvää, hioituuko särmät ja sulaudummeko yhteen. Vuod225134- 254308
- 272451
- 342234
- 371998
- 151908
En ole koskaan kokenut
Ennen mitään tällaista rakastumista. Tiedän että kaipaan sinua varmaan loppu elämän. Toivottavasti ei tarvitsisi vain ka191587- 121521
Voi ei! Jari Sillanpää heitti keikan Helsingissä - Hämmästyttävä hetki lavalla...
Ex-tangokuningas on parhaillaan konserttikiertueella. Hän esiintyi Savoy teatterissa äitienpäivänä. Sillanpää jakoi kons211237Kerranki asiat oikein
Ilkka ja muut pienpuolueeet...teitte hyvän työn kun valitsitte pätevän henkilön virkaan eikä kepulle passelia!! Jatkakaa101164