Java, NetBeans ja Google App Engine

 Tulipa tutustuttua Googlen tarjoamiin hostauspalveluihin, kun tarvetta oli tehdä toimiva sovellusdemo käyttäen Javaa. Pienen palvelun saa laitettua ilmaiseksi, joten pitihän sitä koettaa.

Olen käyttänyt kehitysalustana Windows 8.1:ä ja NetBeans 8.0.1:aa, jossa kyllä on mukana perus Maven, mutta App Enginen naittamiseksi ei ole tarjolla virallista lisäosaa... Liekö siitä johtuen vai miten, mutta ensimmäinen kokeilu ei mennyt ihan kuin strömsöössä... Tässä itselleni muistiin ja ehkä muillekin avuksi pikainen pikaopas GAE:n maailmaan Javan silmin.

Luo uusi projekti Developers Consoleen

Siirry osoitteeseen https://console.developers.google.com/ . Hyväksy käyttöehdot jos sellaista kysytään. Mene kohtaan Projects ja siellä nappaa "Create Project" -nappulaa.

Anna projektille kuvaava nimi. Project ID -kohtaan tulee valmiiksi ehdotus projektin uniikista ID-arvosta jota voit muuttaa halutessasi. Ota ID-arvo ylös, sillä sitä tarvitaan myöhemmin. Klikkaa "Create".

Hetken aikaa kestää, kun uutta projektia luodaan, mutta tämän jälkeen sinut ohjataan projekin hallintanäkymään (Dashboard). 

Viritä NetBeans kuntoon

Tässä tuleekin se projektin haastavin vaihe. Tosin tämä tarvitsee tehdä vain kerran.

Tarkista Javan versio

Näin joulukuussa 2014 Google App Engine vaatii Java 7 SDK:n, uudemman kanssa tulee ongelmia. Joten varmiten pääset hommassa eteenpäin poistamalla kaikki muut Java-asennukset, ja asentamalla Java 7 SDK:n.

Tarkista myös ympäristömuuttujapolut:

Pikanäppäimet Win+R ja sysdm.cpl. Klikkaa Lisäasetukset => Ympäristömuuttujat...

Tarkista että Järjestelmämuuttujat -osion muuttuja "Path" sisältää polun Javan kansioon bin (esim. C:\Program Files\Java\jdk1.7.0_72\bin). Jos ei ole, lisää se vanhojen arvojen eteen ja erota seuraavasta puolipisteellä (;).

 Tarkista samasta osiosta, löytyykö sieltä muuttuja "JAVA_HOME". Siitä tulee löytyä sama Javan kansion polku mitä äskenkin. Jollei koko muuttujaa ole, lisää sellainen käyttäen "Uusi..." -painiketta.

Lataa apuohjelmat ja lisäosat

 NetBeansiin on tehty lisäosa, mutta sitä ei ole päivitetty sitten NetBeans version 7.4. Tosin tämä Gaelyk:n forkkaama lisäosa toimii vielä 8.0.2 -versiossakin.

Lataa uusin nbappengine -zip täältä. Pura paketti johonkin fiksuun paikkaan, esim. C:\NetBeansExtrat -kansioon.

Tuon lisäksi tarvitset vielä Google Cloud SDK:n, jonka voit ladata täältä kohdasta "Google App Engine SDK For Java". Pura samaiseen kansioon, mitä äskenkin.

Asenna lisäosa NetBeansiin

 Käynnistä NetBeans. Jos käynnistyksessä tulee ilmoitus "Cannot locate java installation in specified jdkhome...", tarkoittaa se ettei NetBeans löydä Javan komponentteja enää samasta paikasta, missä ne oli asennuksen aikana. Korjaa se klikkaamalla "No". Sulje NetBeans, ja muokkaa NetBeans-määritystiedostoa (esim. kansiossa C:\Program Files\NetBeans 8.0\etc\netbeans.conf). Sieltä löytyy n. riviltä 57 kohta "netbeans_jdkhome", korjaa siinä oleva Javan polku oikeaksi. Tallenna ja käynnistä NetBeans.

Mene valikossa kohtaan "Tools" => "Plugins". Avautuneessa ikkunassa mene "Downloaded" -välilehdelle. Klikkaa "Add plugin..."

Käy valitsemassa kaikki .nbm-tiedostot sieltä kansiosta, minne purit äsken lataamasi zip-paketit. Klikkaa "Open".

Klikkaa vasemmassa alaosassa olevaa "Install" -painiketta ja toimi velhon ohjeiden mukaan. Velho ilmoittaa, ettei lisäosaa ole signeerattu "not signed". Anna hyväksyntäsi lisäosien asentamiselle.

Käynnistä NetBeans uudelleen.

Sitten luodaan uusi palvelin, jolla Google App Engine pyörähtää: Avaa valikosta "Tools" => "Servers". Klikkaa "Add server..."

"Server" -listassa pitäisi oleman "Google App Engine" -tyyppinen palvelin. Valitse se ja klikkaa "Next".

Käy valitsemassa "Installation Location" -kenttään se kansio, jonne äsken purit Google App Engine SDK:n. Kun klikkaat "Open", voit katsoa velhon alaosaa: Jos siellä lukee punaisella, että Not found, ei sattunut kansio osumaan oikeaan kohtaan. Kokeile yläkansiota tai alakansioita kunnes oikea osuu kohdallensa.

Seuraavaksi määritellään serverille portit, joita se kuuntelee. Normaalitapauksissa ehdotetut asetukset ovat ookoo.

Sittenpä ei muuta kuin kokeilemaan

NetBeansissa luo uusi projekti, eli "New" => "Java Web" => "Web Application". (Voit myös demota suoraan käyttäen "Samples" => "Google App Engine" => "Guest Book" -esimerkkiä.)

Anna projektille nimeksi se Project ID, minkä otit talteen App Enginessä. Klikkaa "Next".

Valitse "Server" -kohdasta luomasi Google App Engine -palvelin. Ja Next.

Jos haluat jonkin frameworkin, nappaa se ruksilla mukaan. Klikkaa Finish.

Ja ei kun koodaamaan! Testata voit normaalisti käyttäen Run-komentoa tai vihreää nuolta yläosan valikosta.

Julkaisu Googlen palvelimelle

Klikkaa Projektisi "Configuration Files" -kansio auki, Avaa sieltä tiedosto "appengine-web.xml". Määritä "<application>"-tagien sisään projektisi Project ID, jonka otit talteen luodessasi projektia. Tallenna.

Talleta Google-käyttäjätunnuksesi ja salasanasi klikkaamalla projektin kuvakkeen päällä hiiren oikealla ja valitse "Change email/password". Jos sinulla on käytössäsi kaksivaiheinen varmistus, tee Netbeans:lle oma sovellussalasana täällä.

Klikkaa projekti kuvakkeen päällä hiiren oikealla ja "Deploy To Google App Engine". Projekti käännetään ja lähetetään palvelimelle. Kun vienti on valmis, pääset sivustolle osoitteella https://<projektisi ID>.appspot.com/

Ongelmatilanteita

Julkaisuongelmat

400 Bad Request NetBeansin Output-logissa

Katso, että osoite, johon järjestelmä yrittää lähettää on oikein. Esim. jos app_id -arvo ei ole oikein, tulee tämä virhe. Varmista, että projektin nimi on sama, kuin Project ID -arvo! Varmista myös, että olet tallettanut NetBeansiin oikeat Google-tilisi tunnukset.

500 Server Error applikaation osoitteeseen mennessä

Katso projektisi hallintakonsolissa kohdassa "Monitoring" => "Logs", mikä meni vikaan.

java.lang.ClassNotFoundException: Ko luokkaa ei löydy. Kokeile ajaa Deploy uudelleen ja katso tarkkaan, mitä "Output" -ikkuna kertoo. Esim. Javan 8 -versiolla yrittäessäni ei järjestelmä löytänyt oikeaa Java Compileria, jolloin luokat jäivät kokonaan paketista pois.

Unsupported major.minor version 52.0: Deploy suoriutui oikein, mutta itse Java Compiler käytti Javan versiota 8. Huomaa, ettei pelkkä NetBeansin määritys käyttämään Java 7:ää riitä! Helpoin on poistaa Javan 8 -versio kokonaan tietokoneelta.

java.lang.RuntimeException: Cannot get the System Java Compiler. Please use a JDK, not a JRE.: Deploy ei osaa löytää kunnollista JDK-polkua. Katso että ympäristömuuttujat Path ja JAVA_HOME ovat oikein. Jos ei auta, tee näin:

  • C:\Windows\System32 : Tuhoa tiedostot java.exe, javaw.exe ja javaws.exe
  • C:\ProgramData\Oracle\Java : Tuhoa mahdolliset kansiot (itselläni on tyhjä, ja toimii)
  • Poista Path -ympäristömuuttujista mahdolliset arvot C:\ProgramData\Oracle\Java -kansioon tai sen alikansioihin.

Toivottavasti näistä ajatelmista oli apua!


Lähteet

Eero Jääskeläinen

Salo

Linkittäydy Facebookin kautta, ja pysyt ajan tasalla: