2012-06-18 5 views
7

Eventuali duplicati:
How to determine which classes are used by a Java program?Esportazione di classe eseguibile Java al file .jar incluse le dipendenze solo richieste

Ho un progetto Java su Eclipse che contiene un sacco di classi Java. Voglio esportarne uno in un file .jar ma ho incontrato alcuni problemi.

ho già letto attraverso alcuni thread esistenti, ma non ho avuto la risposta giusta per la mia richiesta, perché:

Se scelgo "Esporta file JAR" Ho la classe giusta esportato, ma la. il file jar non contiene le dipendenze richieste per eseguire il file jar.

Se scelgo "Esporta nel file JAR eseguibile" il file jar risultante contiene tutte le dipendenze ma inserisce anche tutte le altre classi dell'intero progetto (anche quelle che non mi servono).

Come è possibile esportare la singola classe Java in un file .jar che include anche le librerie richieste per l'esecuzione del file jar? Il file jar risultante deve essere il più piccolo possibile.

Grazie mille.

+0

Are stai usando Maven? Controlla il [assembly plugin] (http://maven.apache.org/plugins/maven-assembly-plugin/) –

+0

Ho la stessa domanda - Ho scritto un programma semplice e con tutte le risorse comuni, pesa oltre 3Meg ! Sono sicuro che se potessi costruire il vaso con solo le classi di cui ha effettivamente bisogno sarebbe piccolo. –

risposta

1

È possibile creare un nuovo progetto con solo la classe di cui si ha bisogno ed esportarlo come un contenitore eseguibile.

+0

Questa è la soluzione per un solo file, ma poi devo creare un nuovo progetto ogni volta che devo esportare una singola classe. In un grande progetto potrebbe significare molto lavoro. O anche quando ho bisogno di una sola classe, ma quella classe ha bisogno di altre classi fuori dal progetto, devo cercare ogni classe necessaria e spostarla nel nuovo progetto. Perché non esiste la possibilità automatica di mantenere le applicazioni esportate di piccole dimensioni? – fachexot

0

Potrebbe esserci una soluzione alternativa, a seconda del caso d'uso per cui è necessario. In genere, un'analisi completa delle dipendenze non sarà possibile poiché il codice potrebbe caricare le classi in fase di esecuzione, ecc. Se è necessario che i file .jars siano il più piccoli possibile (ad es. Se si desidera poter "klickstart" parti dell'applicazione e non sprecate archiviazione ridondante) si potrebbe utilizzare

Export... -> Runnable JAR File -> Copy required libraries into a sub-folder... 

formica poi tenere una sola copia delle librerie esterne per tutti i vasi. Si prega di fornire più informazioni su ciò che il caso d'uso è, in modo che possiamo inviare risposte più specifiche :)

+0

Il caso d'uso è semplice. Ho un progetto che consiste di molti framework (librerie esterne, file sorgenti, ecc.) E molti file di classe (alcuni con un metodo principale). Ora voglio esportare ognuna delle classi con un metodo principale in un file jar eseguibile. Quindi, voglio quantificare la dimensione dei diversi vasi. Se utilizzo Export come file Jar eseguibile, Eclipse inserisce TUTTE le classi dell'intero progetto in quel file jar. Se utilizzo solo Esporta jar, il jar esportato non includerà le librerie richieste ecc. So che il progetto è un po 'caotico, ma non l'ho implementato, voglio solo analizzarlo. – fachexot

0

provare questo, questo è il modo per creare un vaso o barattolo eseguibile in Eclipse

File -> Export-> Java ->Runnbale JAR file 

Launch configuration : your Class containing the public static void main(String[] args) 

Export destination : Target place 

Library Handling: 

Package required libraries into generated JAR 

FINISH 
+0

Questo è il modo in cui lo sto già facendo. Sfortunatamente questo non risolve il mio problema dato che il jar eseguibile contiene tutti i file dell'intero progetto Eclipse. – fachexot

+0

@fachexot Lo stesso problema qui ... ancora nessuna soluzione? – momomo