Morjens
Olen luonut NetBeansilla Java-ohjelman. Nyt kun pakkaan sitä jar-tiedostoksi ja koitan käynnistää tuplaklikkaamalla (Windowsista valittu avausohjelmaksi javaw), saan virheen:
Exception in thread "main" java.lang.NoClassDefFoundError: S:\Kansio\Ohjelma/jar Caused by: java.lang.ClassNotFoundException: S:\Kansio\Ohjelma.jar ... Could not find the main class: S:\Kansio\Ohjelma.jar. Program will exit.
Sinänsä aika erikoista, kun koneilla joissa JDK on asennettuna, softa käynnistyy tuplaklikkauksella. Muilla koneilla se lähtee käyntiin vain komennolla javaw -jar Ohjelma.jar.
Missä vika?
Manifest-tiedosto MANIFEST.MF näyttää tältä (lopussa on tyhjä rivi)
Manifest-Version: 1.0 Class-Path: lib/itextpdf-5.3.3.jar Created-By: 1.6.0_35 (Sun Microsystems Inc.) Main-Class: my.package.MyMainClass
Pakkasin ohjelman jar-tiedostoksi komennolla
jar cvfm Ohjelma.jar MANIFEST.MF my/package/* lib Resources txt
Ei auta vain valita avausohjelmaksi javaw:tä, vaan pitää saada avauskomentoon myös tuo parametri -jar mukaan. Muuten polku tulkitaan luokan nimeksi ja etsitään vastaavaa class-tiedostoa.
Miksi ohjelma käynnistyy sitten koneilla, joilla on JDK asennettuna?
JDK varmaan asettaa avausohjelman oikein, eihän se ole mikään mahdoton tehtävä. Joku muu ehkä osaa antaa suorat ohjeet, itse voin antaa nyt vain googletusta. Yksinkertainen ratkaisu on tietysti etsiä rekisteristä viittauksia javaw-ohjelmaan, jolloin nykyiseltä koneeltasi löytyy väärä ratkaisu, joka pitää poistaa, ja JDK-koneelta löytynee oikea ratkaisu, joka pitää kopioida nykyiselle koneelle.
Kiitos sulle, etsin rekisteristä kaikki viittaukset siihen, ja lisäsin -jar-lipun.
Aihe on jo aika vanha, joten et voi enää vastata siihen.