Olen tässä alkanut opiskelemaan javaa. Olen nyt tihrustanut yhden ohjelman ja saanut sen tavumuotoon. Kuinka saan sen tavukoodin windowsilla suoritettavaksi ohjelmaksi?
Esimerkiksi GCJ:llä, GNU:n Java-kääntäjällä. Saat siitä Windows-version helpoiten MinGW:n asentamalla.
Jos haluat kuitenkin vain _ajaa_ ohjelmasi (pitäen sen tavumuodossa), käytä komentoa java <mikälie>.class
.
Kyllähän sen tavukoodinkin voi suorittaa, juuri tuo java [luokannimi]
. Laita se vaikka BATiin niin helpottuu. Isommat ohjelmat kannattaa sitten paketoida JARiin (heh :) ja ajaa java -jar jarinnimi.jar
. Voit toki lähteä sitä jotenkin muutenkin kääntelemään, mutta se lienee tarpeetonta.
EDIT: Netbeans IDEllä JARien tekeminen onnistuu helposti, sen enempiä säätelemättä ;)
Yritin nyt tuota java [luokkanimi] juttua ja se antaa seuraavanlaista errortekstiä:
Registry key 'Software\JavaSoft\Java Runtime Envi
has value '1.4', but '1.5' is required.
Error: could not find java.dll
Error: could not find Java 2 Runtime Environment.
Koneeltas puuttuu Java2 Runtime. Lataa se Sunin sivulta.
Itse asiassa suosittelisin lataamaan NetBeansin. Pikkuohjelmiin se on ehkä hieman turhan järeä, mutta mm. Code completion helpottaa elämää. JARit onnistuu yhdellä klikkauksella.
Latauslinkki (sekä Java Runtime että Netbeans):
http://java.sun.com/j2se/1.5.0/download.jsp
Asensin sen java 2 runtimen ja lisää tai poista sovelluksessa lukee: J2SE Runtime Environment 5.0 eikä se javakomento toimi vieläkään! tulee samat virheilmotukset...
Sinulla on nyt todennäköisesti kaksi java virtuaalikonetta asennettuna. Vanhempi versio 1.4 ja nyt tuo uusi versio 1.5 (java 5) ja komentotulkin java komento osoittaa siihen vanhaan. Kokeile ajaa 'java -version', jolla näkee mikä versio on kyseessä. Jos tosiaan on näin, joudut käsin muuttamaan PATH ympäristömuuttujan viittauksen vanhasta java hakemistosta uuteen. Yleensä eri virtuaalikoneet asennetaan hakemistoon C:\Program Files\Java ja sen alihakemistoihin.
Edistystä! sain laitettua sen komennon osoittamaan uudempaan javaan ja nyt kun yritän ajaa tavutiedostoni se antaa seuraavan ilmoituksen eikä muuta tapahu;
Exception in thread "main" java.lang.NoClassDefFoundError: HelloWorldApp
Tuo on muistaakseni se virheilmoitus, joka tulee kun Java-sorsasi pääluokan nimi (sen luokan, joka sisältää main
-metodin) ei vastaa tiedoston nimeä.
tarkistin sen sorsan ja pääluokan nimi pitäis olla oikein...
muuten: pitääkö niiden tavukoodien olla jossain erityisessä kansiossa jotta se javajuttu toimii?
Tarkista ainakin seuraavat asiat:
Tiedoston nimi ja luokan nimi ovat samat (kirjainkoko mukaanlukien). Esim. "HelloWorldApp.class" ja "public class HelloWorldApp {..."
Kai lähdekoodit on käännetty? :)
Yrität ajaa tiedoston komennolla "java HelloWorldApp" ei siis "java HelloWorldApp.class".
Kaikko nuo asiat pitäis olla oikein...
pitääkö niiden tavukoodien olla jossain erityisessä kansiossa jotta se javajuttu toimii?
peredic kirjoitti:
Kaikko nuo asiat pitäis olla oikein...
pitääkö niiden tavukoodien olla jossain erityisessä kansiossa jotta se javajuttu toimii?
java hakee määritellystä classpath:sta luokkia joita tarvitaan ohjelman ajon aikana. Käytetyn classpath:n voi määritellä joko ympäristömuuttujaan CLASSPATH tai sitten komentoriviltä vivulla -classpath.
Jos HelloWorldApp ohjelmasi class tiedosto on hakemistossa /home/tunnukseni/J/HelloProject niin käynnistä se käskyllä:
java -classpath /home/tunnukseni/J/HelloProjekt HelloWorldApp
Siis sanoisitko uusiks, Mikä ihmeen "/home/tunnus/"?
mihin tuo home viittaa ja onko toi tunnus koneen käyttäjätunnus. muuten, käytän windowssii...
java -classpath C:\Documents and Settings\peredic\Omat Tiedostot\Java\HelloProjekt HelloWorldApp
Tai sitten asetat ohjauspaneelista CLASSPATHiksi ".", eli nykyisen hakemiston. /home/tunnus on Linuxin hakemistohierarkiaa...
Okei, nyt kun ajan sen ohjeiden mukaan siihen konsoliin ilmestyy teksti mikä ohjelman piti tulostaa. Olen siis onnistunut?
peredic kirjoitti:
Okei, nyt kun ajan sen ohjeiden mukaan siihen konsoliin ilmestyy teksti mikä ohjelman piti tulostaa. Olen siis onnistunut?
Jos kerta ohjelma tekee sen mitä olet sen käskenyt tehdä, niin olet mitä todennäköisemmin onnistunut.
Jippiii! :D
Seuraavaksi: Miten saan käännettyä tavukoodit EXE ohjelmaksi Käyttäen MinGW:tä jota minulle suositeltiin?
EI sun edelleenkään kannata/tarvitse sitä tehdä. Lue lisää.
Ajat vain java -jar helloWorld.jar :P
Juice kirjoitti:
EI sun edelleenkään kannata/tarvitse sitä tehdä. Lue lisää.
Ajat vain java -jar helloWorld.jar :P
Entä jos alan levittään javaohjelmiani?
Laitat JARiin, edelleen. Itsekin olen tehnyt niin ja kylläpä ovat näyttäneet toimivan. Itse olen laittanut batin samaan zippiin (batissa on rivi java -jar jarinnimi.jar
) vielä varmuuden vuoksi. Voit vaikka katsoa filuja osoitteessa http://juiceplatz.net ja todeta, että kyllä ne JARina toimivat ;)
peredic kirjoitti:
Entä jos alan levittään javaohjelmiani?
Eikös sillon ole kivaa, että ne toimii muillakin käyttiksillä ku Windowsilla?
TIPS! JAR paketit ainakin windosissa käynnistyy klikkaamalla jar tiedostoa, jos ajonaikaninen kirjasto on asennettuna.
peredic kirjoitti:
Siis sanoisitko uusiks, Mikä ihmeen "/home/tunnus/"?
mihin tuo home viittaa ja onko toi tunnus koneen käyttäjätunnus. muuten, käytän windowssii...
Niin se oli vaan esimerkki, jota olisi pitännyt osata soveltaa vaihtamalla "/home/tunnus......" tilalle se hakemisto, missä itse projektiaan kehittää. Kannattaa muuten myös tutustua IDEA kehitysympäristöön se on IMO paras/helpoin mitä on saatavilla. Ainut huono puoli siinä on maksullisuus. Tosin 30pv kokeilulisenssin saa tilattua...
Aihe on jo aika vanha, joten et voi enää vastata siihen.