2012-04-12 9 views
8

Nella compilazione di piattaforme geotools personalizzate (in realtà basate su OSGi) uno dei moduli viene compilato correttamente quando provo a compilarlo separatamente. Ma quando costruisco l'intero progetto, fallisce allo stage compile con la ragione che non riesce a trovare determinati pacchetti/classi. In ogni caso, la dipendenza è risolta.maven risolve dipendenze ma non riesce a trovare pacchetti/classi in esso

qui è la dipendenza da pom.xml del modulo:

<dependency> 
    <groupId>org.picocontainer</groupId> 
    <artifactId>com.springsource.org.picocontainer</artifactId> 
    <version>1.2.0</version> 
</dependency> 

la parte di errore di generazione di Maven:

...\geotools-osgi\modules\extension\xsd\xsd-core\src\main\java\org\geotools\xs\bindings\XSGroupBinding.java:[19,24] package org.picocon tainer does not exist

...\geotools-osgi\modules\extension\xsd\xsd-core\src\main\java\org\geotools\xml\AbstractComplexBinding.java:[20,24] package org.picocon tainer does not exist

...\geotools-osgi\modules\extension\xsd\xsd-core\src\main\java\org\geotools\xml\ComplexBinding.java:[21,24] package org.picocontainer does not exist

se cambio il dependecy pom.xml - non riesce con qualche tipo di "impossibile risolvere il pacchetto".

Il progetto è davvero grande e il numero di bundle e poms figlio/genitore. Quindi non posso pubblicarli tutti qui. Quindi la mia domanda è: qual è la ragione possibile per questo tipo di problemi? Potrebbe essere un conflitto di dipendenza tra genitore/figlio?

+0

Non penso che possa essere causato in qualche modo dalla relazione genitore-figlio perché, indipendentemente dal fatto che si costruisca solo questo modulo o progetto, il percorso di classe è lo stesso. Prova ad eseguire build con l'opzione debug '-X', potrebbe far luce. Post scriptum 'org.picocon tainer' è un errore? –

+0

sì, questo è un errore di battitura, mi dispiace. –

risposta

1

Bene, il vero motivo era che il computer di destinazione aveva l'accesso limitato a Internet, quindi l'accesso limitato ai repository Maven. Con un po 'di magia nera non ha fallito con un qualche tipo di' non può scaricare artefatto '(forse a causa dell'installazione manuale di alcuni file jar). Quindi abbiamo ottenuto il server con accesso normale, lo abbiamo configurato come mirror, configurato il nostro maven per usare lo specchio e questo ha risolto il problema. Grazie a @ Samuel per aver partecipato al mio problema, ma come posso vedere non è stato possibile determinare il problema dalla descrizione del problema.

5

Posso vedere due cose per cercare di risolverlo.

Prima di tutto, se vai nel tuo repository locale .m2, vedrai se ci sono altre versioni della lib (tuttavia, a volte versioni differenti possono avere un nome diverso, e quindi essere memorizzate in una cartella diversa, che fa non aiuta)

È inoltre possibile controllare quale sia la dipendenza EFFETTIVA utilizzata, nell'IDE o nella riga di comando (dipendenza mvn: albero). Potrebbe essere necessario escludere alcune dipendenze transitive per rimanere coerenti. Io uso il plugin Eclipse per questo.

Infine, quando si è sicuri della dipendenza che si utilizza, è possibile aprire il barattolo e vedere se è presente ciò che si aspetta di essere presente.

+0

Grazie per la rapida risposta. Come hai suggerito ho fatto un controllo di dipendenza 'mvn dependency: tree' e non ha mostrato nulla di sbagliato - COSTRUISCI SUCCESSIVAMENTE. La ricerca nella cartella .m2/repository con la parola chiave 'picocontainer' mostra solo uno .jar - proprio esattamente quello di cui ho bisogno e non è vuoto - contiene tutti i pacchetti e le classi necessarie di cui ho bisogno. –

+0

Il tuo IDE compila con successo il tuo codice? Quale IDE usi? –

0

Ho avuto lo stesso problema. Il mio problema era che la dipendenza era destinata a testare. così quando ho eseguito exec: java, non è stato possibile trovare la classe perché era fuori dal campo di applicazione.