|  | 		    
					
        
         
          
         
	
          | |  | Argh! Ant driller. Fra : Kenneth
 | 
 Dato :  11-03-05 15:46
 | 
 |  | Jeg er i gang med et mindre Java projekt hvor jeg bruger Eclipse som
 editor og Ant til at kompilere og køre unit tests m.m. Alt kører på
 Fedora Core 2 linux og bash er min foretrukne shell.
 
 Min system classpath indeholder alle de biblioteker som mit projekt
 afhænger af lige nu - den ser sådan ud (indsat linjeskift for læsbarhed):
 
 ..:
 /usr/java/jdk:
 /home/kaj/speciale/code/xkms/bin:
 /usr/java/xerces/xercesImpl.jar:
 /usr/java/xml-security/build/xmlsec.jar:
 /usr/java/log4j/dist/lib/log4j-1.2.9.jar:
 /usr/java/commons-logging-1.0.4/commons-logging.jar:
 /usr/java/xalan/bin/xalan.jar:
 /usr/java/junit/junit.jar
 
 
 I min Ant buildfile har jeg så defineret et fileset, som jeg refererer
 til som classpath og det indeholder stort set de samme filer, deriblandt
 /usr/java/commons-logging-1.0.4/commons-logging.jar (definitionen findes
 nederst.)
 
 Problemet er så at hvis denne er med i mit classpath-fileset i
 build.xml, så fejler mine tests og siger:
 
 org.apache.commons.logging.LogConfigurationException: Invalid class
 loader hierarchy.  You have more than one version of
 'org.apache.commons.logging.Log' visible, which is not allowed
 
 Fint nok - jeg fjerner førnævnte jar fil fra fileset'tet, og så virker
 det når jeg kører Ant fra bash.
 
 Nu virker det så bare ikke fra Eclipse... Selv om jeg har
 commons-logging filen i mine "Project libraries".
 Jeg får da følgende fejl:
 Exception in constructor: testConstructorDocument
 (java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory
 
 Den anden mulighed er at ikke have commons-logging.jar med i min system
 classpath, men så have den med i Ant build filen - så optræder den kun
 en gang i CLASSPATH når jeg kører Ant fra bash. Men det giver samme fejl
 som i Eclipse!?! NoClassDefFoundError.
 
 Suk...
 
 Hvis der sidder en Ant haj derude, må I gerne give mig et hint, da jeg
 er ved at blive træt af det her. Jeg har sikkert overset en eller anden
 banalitet.
 
 PFT.
 
 Mvh
 Kenneth
 
 Her er min ant classpath:
 <path id="dk.itu.kaj.xkms.classpath">
 <pathelement path="${outdir}"/>
 <pathelement location="/usr/java/xerces-2_6_2/xercesImpl.jar"/>
 <pathelement location="/usr/java/xml-security/build/xmlsec.jar"/>
 <pathelement location="/usr/java/log4j/dist/lib/log4j-1.2.9.jar"/>
 <pathelement
 location="/usr/java/commons-logging-1.0.4/commons-logging.jar"/>
 <pathelement location="/usr/java/xalan-j_2_6_0/bin/xalan.jar"/>
 <pathelement location="/usr/java/junit/junit.jar"/>
 <pathelement location="/usr/java/xerces-2_6_2/xml-apis.jar"/>
 <pathelement location="/usr/java/xerces-2_6_2/xmlParserAPIs.jar"/>
 </path>
 
 
 |  |  | 
  Soren Kuula (18-03-2005) 
 
	
          | |  | Kommentar Fra : Soren Kuula
 | 
 Dato :  18-03-05 01:11
 | 
 |  | Kenneth wrote:
 > Jeg er i gang med et mindre Java projekt hvor jeg bruger Eclipse som
 > editor og Ant til at kompilere og køre unit tests m.m. Alt kører på
 > Fedora Core 2 linux og bash er min foretrukne shell.
 
 Hej,
 
 Hmm der er meget der som minder om mit setup .. må jeg spørge hvad det
 er for et projekt?
 
 > Min system classpath indeholder alle de biblioteker som mit projekt
 > afhænger af lige nu - den ser sådan ud (indsat linjeskift for læsbarhed):
 
 > I min Ant buildfile har jeg så defineret et fileset, som jeg refererer
 > til som classpath og det indeholder stort set de samme filer, deriblandt
 > /usr/java/commons-logging-1.0.4/commons-logging.jar (definitionen findes
 > nederst.)
 
 Du mener en path, right? Fileset er noget andet .. ?
 
 > Problemet er så at hvis denne er med i mit classpath-fileset i
 > build.xml, så fejler mine tests og siger:
 
 > <<brokke>>
 > Nu virker det så bare ikke fra Eclipse... Selv om jeg har
 > commons-logging filen i mine "Project libraries".
 > Jeg får da følgende fejl:
 > Exception in constructor: testConstructorDocument
 > (java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory
 
 Vel fordi eclipse ikke gør noget som helst for at processer (ant) skal
 have adgang til libraries.
 
 > Den anden mulighed er at ikke have commons-logging.jar med i min system
 > classpath, men så have den med i Ant build filen - så optræder den kun
 > en gang i CLASSPATH når jeg kører Ant fra bash. Men det giver samme fejl
 > som i Eclipse!?! NoClassDefFoundError.
 
 Det lyder godt nok underligt. Er du sikker på at du ikke har skrevet
 forkert et sted? Hvad siger ant -verbose?
 
 > Hvis der sidder en Ant haj derude, må I gerne give mig et hint, da jeg
 > er ved at blive træt af det her. Jeg har sikkert overset en eller anden
 > banalitet.
 
 Jeg er kun småfisk, men.. jeg har erfaret at system classpath bare er
 bøvl, specielt hvis du skal dele dit miljø med andre, eller flytter det
 mellem maskiner.
 
 Jeg har skåret min system classpath ned så meget som muligt, og bruger
 den så lidt som muligt.
 
 Jeg har et setup kørende, hvor jeg har håndkopieret lib indholdet i
 ..classpath (oh gider nogen ikke at lave et xslt til det?) over i en path
 som din, som jeg bruger til classpath, som dig. Alt virker. Faktisk er
 min CLASSPATH env. var. tom.
 
 Forresten, hvilken java kører du med, og er du sikker på at du behøver
 xerces og xml api's i classpath? Java's indbyggede er der også -- i
 version 1.4 op (ok JAXP 1.3 er vist fra 1.5).
 
 MVH
 Søren
 
 
 
 |  |  | 
  Kenneth (18-03-2005) 
 
	
          | |  | Kommentar Fra : Kenneth
 | 
 Dato :  18-03-05 12:16
 | 
 |  | Soren Kuula wrote:
 
 > Hmm der er meget der som minder om mit setup .. må jeg spørge hvad det
 > er for et projekt?
 
 Du er velkommen til at spørge.
 
 >
 >> Min system classpath indeholder alle de biblioteker som mit projekt
 >> afhænger af lige nu - den ser sådan ud (indsat linjeskift for læsbarhed):
 >
 >
 >> I min Ant buildfile har jeg så defineret et fileset, som jeg refererer
 >> til som classpath og det indeholder stort set de samme filer, deriblandt
 >> /usr/java/commons-logging-1.0.4/commons-logging.jar (definitionen
 >> findes nederst.)
 >
 >
 > Du mener en path, right? Fileset er noget andet .. ?
 
 Jeps. :)
 
 > Det lyder godt nok underligt. Er du sikker på at du ikke har skrevet
 > forkert et sted? Hvad siger ant -verbose?
 
 Den siger for meget, hvilket resulterer i en mental buffer overflow. ;)
 
 
 > Jeg er kun småfisk, men.. jeg har erfaret at system classpath bare er
 > bøvl, specielt hvis du skal dele dit miljø med andre, eller flytter det
 > mellem maskiner.
 
 Det blev også min konklusion.
 Nu indeholder min system CLASSPATH kun .:$JAVA_HOME:$JUNIT_HOME:/junit.jar
 og så kører alting bare 100% - også når jeg skifter mellem forskellige
 ikke-ens systemer. Jeg kan ikke have en helt tom CLASSPATH, da jeg ind
 imellem kompilerer/kører småting fra shell'en.
 
 > Forresten, hvilken java kører du med, og er du sikker på at du behøver
 > xerces og xml api's i classpath? Java's indbyggede er der også -- i
 > version 1.4 op (ok JAXP 1.3 er vist fra 1.5).
 
 Jeg har lige skiftet fra 1.5 til 1.4.2.07.
 Og jeg er ikke sikker på om jeg kan undvære Xerces m.m., men det projekt
 jeg arbejder med benytter vist eksplicit Xerces, og jeg orker ikke at
 eksperimentere med om jeg kan erstatte Xalan med noget Sun-halløj. Ikke
 lige nu... :)
 
 Åh ja, istedet for at vente på at du spørger til hvilket projekt jeg
 arbejder med, kan jeg da selv sige det. ;D
 Det er mit speciale, som handler om XML Key Management Services, eller
 XKMS v.2 hvis det skal være akronymiseret. Jeg er ved at lave en
 implementation af W3C specifikationen af XKMS, og bruger Apache
 projektet XML-Security som "platform", selvom det ikke er lykkedes mig
 at genbruge særlig meget. Dog bliver det en lidt tynd, delvis
 implementation pga. tidspres; jeg havde ellers håbet at levere et
 komplet bibliotek med tests, dokumentation og eksempler. :(
 
 Hvis du laver noget lignende, eller har erfaringer med XML Signature og
 den slags hører jeg da gerne om det. Jeg føler mig lidt som Palle med
 det her projekt - du ved, ham der var alene i verden. ;)
 
 Mvh
 Kenneth
 
 
 |  |  | 
   Soren Kuula (18-03-2005) 
 
	
          | |  | Kommentar Fra : Soren Kuula
 | 
 Dato :  18-03-05 17:44
 | 
 |  | Hejsa,
 
 Kenneth wrote:
 > Det blev også min konklusion.
 > Nu indeholder min system CLASSPATH kun .:$JAVA_HOME:$JUNIT_HOME:/junit.jar
 > og så kører alting bare 100% - også når jeg skifter mellem forskellige
 > ikke-ens systemer. Jeg kan ikke have en helt tom CLASSPATH, da jeg ind
 > imellem kompilerer/kører småting fra shell'en.
 
 javac -classpath blahblah -sourcepath fnidder -out fnadder
 fnidder/x/y/z/*.java
 
 java -cp blahblah:fnadder x.y.x.A
 
 > Jeg har lige skiftet fra 1.5 til 1.4.2.07.
 > Og jeg er ikke sikker på om jeg kan undvære Xerces m.m., men det projekt
 > jeg arbejder med benytter vist eksplicit Xerces, og jeg orker ikke at
 > eksperimentere med om jeg kan erstatte Xalan med noget Sun-halløj. Ikke
 > lige nu... :)
 
 ok ,det ville ellers være fint for et framework bare at kunne køre på
 JAXP, som er rimeligt komplet efterhånden.
 
 > Åh ja, istedet for at vente på at du spørger til hvilket projekt jeg
 > arbejder med, kan jeg da selv sige det. ;D
 > Det er mit speciale, som handler om XML Key Management Services, eller
 > XKMS v.2 hvis det skal være akronymiseret. Jeg er ved at lave en
 ...
 > Hvis du laver noget lignende, eller har erfaringer med XML Signature og
 > den slags hører jeg da gerne om det. Jeg føler mig lidt som Palle med
 > det her projekt - du ved, ham der var alene i verden. ;)
 
 Nraaah, jeg laver (i samme anledning) noget med statisk validering af XSLT.
 
 MVH
 Søren
 
 
 
 |  |  | 
 |  |