Toon posts:

[java] jar-applicatie vindt xerces lib niet

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hoi allemaal,

Ik heb een applicatie gemaakt in java. Deze applicatie bevindt zich in het het package:
nl.informatiefabriek.lizard;

Om XML te parsen gebruik ik xerces. (xerces.jar staat in mijn $CLASSPATH);

Ik gebruik de volgende xml in mijn build.xml om de jar te 'bouwen':

code:
1
2
3
4
5
6
7
<target name="dist" depends="compile">
    <jar jarfile="${distDir}/lizard.jar" basedir="${buildDir} includes="**/*.java">
         <manifest>
               <attribute name="Main-Class" value="nl.informatiefabriek.lizard.Lizard"/>
         </manifest>
     </jar>
</target>


Nu run ik de jar met:

code:
1
java -jar lizard.jar


Dit werkt... Dus, de jarfile lijkt mij in orde. Maar zodra ik iets importeer uit de xerces libs gaat het mis. Ik krijg dan de volgende melding:

code:
1
2
java.lang.ClassNotFoundException: org.apache.xerces.parsers.SAXParser
SAX2 Driver class org.apache.xerces.parsers.SAXParser not found


Nu staat xerces.jar dus wel in mijn CLASSPATH variabele. (Linux Bourne shell).
En zelfs als ik het run met:

code:
1
java -cp $CLASSPATH -jar lizard.jar


gaat het mis... (Zelfde melding).

Het gekke is dat wanneer ik 'm run vanuit de build directory (Waar de class files staan):

code:
1
2
cd build
java nl.informatiefabriek.lizard.Lizard


Het gewoon werkt! Snapt iemand wat hier aan de hand is?

  • momania
  • Registratie: Mei 2000
  • Laatst online: 20:14

momania

iPhone 30! Bam!

Heb je in de jar file ook gekeken naar de manifest file of daarin het classpath goed beschreven staat?

Neem je whisky mee, is het te weinig... *zucht*


  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
Xerces is tegenwoordig verdeeld over enkele jars he? Heb je niet toevallig alleen xmlParserAPIs op je CLASSPATH staan?

Het lijkt mij overigens het handigste om de jars in /jre/lib/ext te zetten: elke applicatie kan dan gebruik maken van Xerces ipv de Crimson frutsels.

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


Verwijderd

Topicstarter
Hmmm... Ik merkte net dat ik de java binary (executable) van de SDK gebruikte.
In mijn geval j2sdk1.4.0_01. Ik heb mijn PATH variabele nu zo aangepast zodat hij eerst die van de JRE gebruikt. In mijn geval: j2re1.4.1. Vervolgens heb ik zoals mbravenboer suggereerde al mijn jar libs naar jre/lib/ext gekopieerd. Nu werkt het allemaal wel.

Het blijft echter voor mij een raadsel waarom dan de java binary van de SDK niet wil...
mbravenboer: Xerces is inderdaad opgedeeld in verschillende jars. En die staan ook in mijn CLASSPATH variabele.

Iemand nog een idee?