Ho un file jar che menziona la classe principale nel manifest. Quando provo ad eseguire il vaso utilizzando il seguente comandoL'opzione java -jar altera le opzioni del percorso di classe
java -cp .;./* com.foo.MainClass
Il codice viene eseguito e lavora.
Quando provo ad eseguire il vaso utilizzando il seguente comando
java -cp .;./* -jar myjar.jar
ottengo classe non execptions trovati per alcuni vasi che si trovano nella stessa cartella myjar.jar. Spero che l'opzione -cp includa quei jar nel percorso della classe. Ho modificato il mio codice per stampare la proprietà java.class.path. Nel primo caso elencava tutti i jar nella directory corrente, nel secondo caso elencava semplicemente myjar.jar
Ho anche modificato il manifest per aggiungere ad esso l'elemento Class-Path con tutti i jar. Quindi il secondo comando funziona. Ma nel mio codice sto provando a caricare una classe Aribtrary il cui nome è fornito al prompt dei comandi, quindi voglio che il percorso della classe contenga tutti i jar in una cartella. Come faccio a far funzionare il secondo comando in questo scenario?
Dai un'occhiata a [OneJar] (http://one-jar.sourceforge.net/). Questo dovrebbe risolvere i tuoi problemi con il CP. – flash
@flash: Probabilmente no. Dice che non conosce il percorso di classe extra in fase di compilazione (altrimenti potrebbe semplicemente aggiungerlo al manifest). – Thilo
Sembra che tu debba usare il tuo proprio classloader (che aggiunge le cose in base al tuo ambiente). – Thilo