Toon posts:

[Java] Externe jar (Jdom) gebruiken in jar

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik wil een externe jar (Jdom) gebruiken in de jar-file van mijn applicatie.
Ik krijg het alleen niet voor elkaar.
Mijn applicatie jar wordt gegenereerd met Eclipse en werkt.
Wanneer ik jdom er bij wil doen, werkt de jar nog steeds. Echter, er is niets veranderd vergeleken met de jar zonder jdom. De functionaliteit van jdom (xml) werkt dan ook niet.

Ik gebruik het volgende manifest-file:
code:
1
2
3
Manifest-Version: 1.0
Main-Class: main_package.SelfOrganiser
Class-Path: jdom.jar


Ik heb al geprobeerd het probleem op te lossen door jdom.jar op andere plekken te zetten, maar dat werkt ook niet. Ik maak waarchijnlijk een stomme fout, maar ik zie hem niet :$
Kan iemand mij helpen?

  • Standeman
  • Registratie: November 2000
  • Laatst online: 16:10

Standeman

Prutser 1e klasse

Je jdom.jar moet natuurlijk wel in het classpath staan van die de JVM ziet.

java -cp <locatie>/jdom.jar:<locatie>/myapp.jar org.foo.Bar

The ships hung in the sky in much the same way that bricks don’t.


  • Gerco
  • Registratie: Mei 2000
  • Laatst online: 01-12 20:19

Gerco

Professional Newbie

Class-Path in de .jar manifest moet gewoon werken, maar je moet dan natuurlijk ook wel die jar in dezelfde directory als je eigen jar zetten. Dat Class-Path is vziw relatief aan de locatie van jouw jar, niet relatief aan de huidige directory.

Als je jdom.jar bijvoorbeeld in de directory hebt staan naast je eigen jar, moet je java zo opstarten:
code:
1
2
3
# ls
jouwjar.jar jdom.jar
# java -jar jouwjar.jar

[ Voor 26% gewijzigd door Gerco op 11-01-2007 17:52 ]

- "Als ik zou willen dat je het begreep, legde ik het wel beter uit!" | All number systems are base 10!


  • -FoX-
  • Registratie: Januari 2002
  • Niet online

-FoX-

Carpe Diem!

Je kan geen jar file gebruiken die fysiek in de eigen jar file aanwezig is. Er zijn wel applicaties beschikbaar die alles samen kunnen packagen, maar je dient de externe jar's die je wenst te gebruiken binnen je applicatie, gewoon in dezelfde directory te plaatsen (of een subdir; bvb lib/jdom.jar)

Verwijderd

Topicstarter
Als ik het programma opstart met java -jar app_naam.jar, werkt het! Bedankt!

Echter, binnen mijn applicatie wordt er gebruikt gemaakt van xml (m.b.v. van Jdom). Die bestanden kan die dan niet meer vinden.
Java:
1
2
3
4
5
6
SAXBuilder builder = new SAXBuilder();
Document doc = null;
try {
    doc = builder.build("cat_list.xml");
} catch (JDOMException e) {
enz....

Ze zijn zowel aanwezig in het jar-file als in dezelfde map als de applicatie, maar hij kan ze dus niet vinden.

De error is NoClassDefFoundError: org/jdom/JDOMException......................
Betekent dat inderdaad dat ie de bestanden niet kan vinden??

  • Gerco
  • Registratie: Mei 2000
  • Laatst online: 01-12 20:19

Gerco

Professional Newbie

Nee, dat betekent dat de class org.jdom.JDOMException niet gevonden is in het classpath. Heeft dus niets met je XML bestanden te maken (die hij op deze manier misschien ook niet kan vinden in de Jar overigens).

[ Voor 40% gewijzigd door Gerco op 11-01-2007 20:09 ]

- "Als ik zou willen dat je het begreep, legde ik het wel beter uit!" | All number systems are base 10!


Verwijderd

Topicstarter
Wat houdt dit in de praktijk in?
Moet ik alle klassen van de source opnemen in het class-path?
Of moet ik ze opnemen in mijn project (in Eclipse)?
Zo langzamerhand wordt het een beetje acacadabra voor mij..

  • Gerco
  • Registratie: Mei 2000
  • Laatst online: 01-12 20:19

Gerco

Professional Newbie

Misschien is dit iets voor je?

Mastering the Java CLASSPATH

Veel Java developers die alleen een IDE kennen, weten niet goed wat het classpath is. Dat is niet erg als je nooit je IDE uitkomt, maar als je je applicatie wilt kunnen runnen op een andere pc is een goed begrip van het classpath de eerste vereiste.

[ Voor 53% gewijzigd door Gerco op 12-01-2007 13:40 ]

- "Als ik zou willen dat je het begreep, legde ik het wel beter uit!" | All number systems are base 10!


Verwijderd

Topicstarter
Bedankt!

Ik heb nu een batch-file in de directory met daarin:
code:
1
java -classpath ".";jdom\jdom.jar main_package.SelfOrganiser
Pagina: 1