Jag vill skapa en jar-fil av mina klasser och som skall kunna exekveras.
Jag har mha en Ant-task lyckats skapa en jar-fil, som innehåller en .class-fil (den som innehåller main-metoden) samt ett antal 3rd-party jar-filer som programmet behöver.
När jag försöker köra filen:
java -jar foo.jar
så får jag:
Exception in thread "main" java.lang.NoClassDefFoundError: net/sf/jasperreports/engine/JRException
Nu så finns denna jar-fil inbakad in min jar-fil, men programmet hittar inte den.
Stämmer. Du måste referera till de andra jar-filerna i din egen jar-fils manifest.
Ett exempel är enklast att förklara med.
Antag att du har en applikation som kan köpa och sälja på börsen. De är gjorda så att de kommer i tre delar, själva applikationen (main.jar), köpdelen (buy.jar) och säljdelen (sell.jar).
Class-Path: buy.jar sell.jar
Dessa skall sedan ligga i samma katalog som main.jar. Du skall alltså inte packa med dem i main utan möjligen leverera allt som en zip-fil eller en installationsfil.
- fi/jme/JasperTest
- META-INF/MANIFEST.MF
- jasperreports-1.3.3.jar (i denna jar-fil finns klassen net.sf.jasperreports.engine.JRException som nu tycks ändå inte finnas/hittas)
- plus andra jar-filer