/ Forside / Teknologi / Udvikling / Java / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Java
#NavnPoint
molokyle 3688
Klaudi 855
strarup 740
Forvirret 660
gøgeungen 500
Teil 373
Stouenberg 360
vnc 360
pmbruun 341
10  mccracken 320
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


Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408914
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste