webForumDet fria alternativet

Skapa en jar-fil av en .class-fil samt x antal .jar-filer

Java

4 svar · 483 visningar · startad av jme

Medlem sedan maj 20012 237 inlägg
Frågan#1

Hej.

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.

Jag gissar på att MANIFEST.MF inte är korrekt.

Medlem sedan sep. 2001961 inlägg
#2

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.

Medlem sedan maj 20012 237 inlägg
#3

Just nu så ser min MANIFEST.MF ut såhär:

Manifest-Version: 1.0
Ant-Version: Apache Ant 1.6.5
Created-By: 1.5.0_07-87 ("Apple Computer, Inc.")
Main-Class: fi.jme.JasperTest
Class-Path: jasperreports-1.3.3.jar

Strukturen är:

foo.jar:

- 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

Medlem sedan sep. 2001961 inlägg
#4

Läs igen. De externa jar-filerna, jasperreports-1.3.3.jar ska INTE ligga i foo.jar.

Din struktur ska se ut såhär:
<root>/foo.jar
/jasperreports-1.3.3.jar
/...

Medlem sedan maj 20012 237 inlägg
#5

Tack! Läste inte tillräckligt noga. Nu funkar det.

260 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
125 ms — deklarationer (db)
0 ms — hämta statistik (cache)
131 ms — hämta tråd, inlägg och bilagor (db)
126 ms — ändringar (db)