Eclipse: come build un jar eseguibile con jar esterno?

Sto cercando di creare un programma jar eseguibile che dipenda dal jar esterno scaricato. Nel mio progetto li ho inclusi nel percorso di generazione e posso essere eseguito ed eseguito il debug all’interno di eclipse.

Quando ho provato ad esportarlo in un barattolo, posso eseguire il programma ma non riesco a farlo quando provo a premere un pulsante che include chiamate di funzioni e classi dal jar esterno. Ho modificato le variabili d’ambiente (Windows XP) CLASSPATH per includere i percorsi di tutti i jar esterni, ma non funziona.

Un punto da notare è che ho ricevuto avvisi di compilazione durante l’esportazione del mio jar eseguibile, ma non mostra alcuna descrizione sugli avvertimenti.

Qualcuno potrebbe gentilmente fornire una guida completa su come includere un programma jar esterno usando eclipse?

Eclipse 3.5 ha un’opzione per il pacchetto di librerie richieste nel jar eseguibile. File -> Esporta … Scegli il jar eseguibile e fai clic su Avanti. La finestra di esportazione del jar eseguibile ha un pulsante di opzione in cui è ansible scegliere di raggruppare le librerie richieste nel contenitore.

Puoi farlo scrivendo un manifest per il tuo barattolo . Dai un’occhiata all’intestazione del percorso di class . Eclipse ha un’opzione per scegliere il proprio manifest all’esportazione.

L’alternativa è aggiungere la dipendenza al classpath nel momento in cui invochi l’applicazione:

win32: java.exe -cp app.jar;dependency.jar foo.MyMainClass *nix: java -cp app.jar:dependency.jar foo.MyMainClass 

Come includere i vasi del tuo progetto nel tuo barattolo eseguibile:

Sto usando Eclipse versione: 3.7.2 su Ubuntu 12.10. Ti mostrerò anche come creare il file build.xml modo da poter eseguire il ant jar dalla riga di comando e creare il tuo jar con altri jar importati.

Fondamentalmente chiedi a Eclipse di build il file build.xml che importa le tue librerie nel tuo barattolo.

  1. Accendi Eclipse e crea un nuovo progetto Java, crea un nuovo pacchetto ‘mypackage’, aggiungi la tua class principale: Runner Inserisci questo codice.

    inserisci la descrizione dell'immagine qui

  2. Ora include mysql-connector-java-5.1.28-bin.jar di Oracle che ci consente di scrivere Java per connettersi al database MySQL. Fai clic con il tasto destro del mouse sul progetto -> proprietà -> percorso di configurazione java -> Aggiungi jar esterno -> scegli mysql-connector-java-5.1.28-bin.jar.

  3. Esegui il programma all’interno di eclipse, dovrebbe essere eseguito e dirti che il nome utente / password non è valido, il che significa che Eclipse è configurato correttamente con il jar.

  4. In Eclipse vai su File -> Export -> Java -> Runnable Jar File . Vedrai questa finestra di dialogo:

    inserisci la descrizione dell'immagine qui

    Assicurati di impostare la casella di controllo “Salva come formica”. Questo è ciò che rende così puoi usare la linea di comando per fare un ant jar più tardi.

  5. Poi vai al terminale e guarda lo script della formica:

    inserisci la descrizione dell'immagine qui

Quindi, vedi, ho eseguito il jar e non ha fatto errori perché ha trovato il mysql-connector-java-5.1.28-bin.jar incluso in Hello.jar .

Guarda all’interno di Hello.jar: vi Hello.jar e vedrai molti riferimenti a com/mysql/jdbc/stuff.class

Per fare tutto questo sulla riga di comando, fai tutto questo automaticamente: Rinomina buildant.xml in build.xml e cambia il nome di destinazione da create_run_jar a jar .

Quindi, all’interno di MyProject digiti ant jar e boom. Hai il tuo barattolo dentro MyProject. E puoi invocarlo usando java -jar Hello.jar e tutto funziona.

Come buona pratica è ansible utilizzare uno script Ant (Eclipse fornito con esso) per generare il file JAR. All’interno di questo JAR puoi avere tutte le librerie dipendenti.

Puoi anche impostare l’intestazione del percorso di class MANIFEST in modo che punti ai file nel tuo filesystem, tuttavia non è una buona pratica.

Esempio di script ant build.xml:

                                 

Prova l’estensione del barattolo di grasso. Comprenderà tutti i barattoli esterni all’interno del barattolo.

guarda @ java-jar-ignores-classpath-Soluzione