2009-07-27 16 views
8

Ho due guerre, foo.war e bar.war. foo usa le classi dalla barra. Sto provando ad avviare foo, e aggiungo al classpath di Java bar.war, ma java lancia una ClassNotFoundException.Aggiunta di WAR al classpath di Java

Se rinominare bar.war in bar.jar e modificare la struttura della directory in modo che assomigli ad un barattolo, funziona.

la documentazione di Java l'interruttore -CP non menziona i file di guerra:

-classpath <class search path of directories and zip/jar files> 
       A ; separated list of directories, JAR archives, 
       and ZIP archives to search for class files. 
+0

Ho un problema simile a questo: ho dozzine di barattoli e dozzine di file di configurazione che vengono scaricati in una guerra e vorrei essere in grado di eseguire uno script groovy usando questo come mio "Classpath" e avere tutto solo lavoro. Ci sono sempre alternative, ma questo sarebbe stato il modo più flessibile e mi avrebbe risparmiato giorni di lavoro, forse ... Oh, bene, alla prossima soluzione. +1 per la domanda comunque - mi ha salvato un po 'di tempo. –

risposta

15

I file WAR sono intesi come intere applicazioni Web, non librerie. Essi contengono librerie, ma di per sé sono applicazioni.

Un'applicazione Web non deve dipendere da un'altra applicazione. Possono dipendere dalle stesse librerie, ma non l'una dall'altra.

In pratica estrarre la funzionalità comune, renderla una libreria (come un file jar) e includere il file jar in entrambi i file WAR o aggiungerlo a una parte comune del classpath.

+0

Cercavo di evitare ancora-un altro progetto nella nostra crescente lista di progetti. Oh bene. – ripper234

0

La struttura di un file di guerra è molto diverso quindi un barattolo in modo che non funziona. I file di classe Java sono mantenuti nella directory delle classi di WAR, mentre Jar ha direttamente i file di classe Java. Perché non aggiungi la cartella in cui hai i file di classe Java di bar.war?

Cosa stai cercando di ottenere?

Problemi correlati