Come faccio a creare un JAR da un file .java?


88

Stavo scrivendo un semplice programma utilizzando un'applicazione Java (non un'applicazione che ha progetti, ma un'applicazione all'interno di un progetto; .java ) che ha un singolo frame. Entrambi i file sono .java, quindi non posso scrivere un manifest richiesto dal JAR.

Il MyApp.java inizia come una classe con il pacchetto, le importazioni di classe quindi pubblica MyAppe ha una funzione principale, ma è ancora .java di file! Lo sto scrivendo in JDeveloper 11g se aiuta.

Qualche idea su come creare un JAR da questi file?


1
Penso che questo possa essere ottenuto molto più facilmente utilizzando strumenti di packaging come ANT o Maven
Churk

D'accordo con Chuck. Dai un'occhiata a ANT. Gli IDE sono ottimi per lo sviluppo, ma devi capire come funzionano le cose. I file java vengono compilati tramite javac in file .class, dopodiché i file .class possono essere impacchettati in un jar con il comando jar. (Ant ha compiti per farlo, anche jdeveloper ha qualche procedura guidata per farlo).
BigMike

JDeveloper stesso dovrebbe avere la capacità di creare file jar. Una rapida ricerca su Google fornisce
stolzem

1
Puoi chiarire la tua domanda?
Romain Hippeau

Vai alla directory di origine ed esegui il comando: - javac * .java && jar cvf JarName.jar * .class
sgargiante

Risposte:


104

Apri un prompt dei comandi.

Vai alla directory in cui hai i tuoi file .java

Crea una build di directory

Esegui la compilazione Java dalla riga di comando

javac -d ./build *.java

se non ci sono errori, nella directory build dovresti avere il tuo albero delle classi

spostati nella directory build e fai un file

jar cvf YourJar.jar *

Per aggiungere le opzioni della riga di comando del jar di controllo manifest


Ho provato a compilare dalla riga di comando, ma ricevo un errore: Frame1.java:23: il pacchetto oracle.jdeveloper.layout non esiste Come posso risolverlo?
Ci

devi costruire il classpath che fa riferimento a tutte le librerie a cui fai riferimento nelle tue classi. Controlla con la tua installazione di jdeveloper, dovrebbe esserci qualche esempio di build ant (file build.xml) e almeno un paio di buoni tutorial su come usare jDeveloper con ANT sul sito Oracle.
BigMike


1
Ho aggiunto un'opzione al mio comando jar per aggiungere automaticamente la classe principale al manifest ... jar cfe Main.jar Main *(mi sono confuso però, ho dovuto mettere il nome della classe principale dopo il nome del file di output.)
Klaider

32

Semplicemente con la riga di comando:

javac MyApp.java
jar -cf myJar.jar MyApp.class

Sicuramente gli IDE evitano di utilizzare il terminale della riga di comando


11
Quanto sopra ha funzionato, tuttavia avevo bisogno di specificare il .classdi myApp. Così è statojar -cf myJar.jar myApp.class
Navigatron

3
Anche qui errori di ortografia e si presume che non ci sia alcuna istruzione del pacchetto. Non adeguata.
user207421

14

Ok questa è la soluzione che avrei voluto trovare, invece qui la scrivo:

Per prima cosa creare la struttura di directory corrispondente al pacchetto definito per il file .java, se è my.super.application creare la directory "my" e al suo interno "super" e al suo interno il file .java "App.java"

quindi dalla riga di comando:

   javac -cp /path/to/lib1.jar:/path/to/lib2.jar path/to/my/super/App.java

Nota quanto sopra includerà più librerie, se sotto Windows usa "," per separare più file altrimenti sotto GNU / Linux usa ":" Per creare un file jar

   jar -cvfe App.jar App my/app/

quanto sopra creerà l'applicazione con il suo Manifest corrispondente che indica l'App come classe principale.

Non è possibile includere le librerie richieste all'interno del file jar utilizzando i parametri della riga di comando java o jar.

Puoi invece:

  1. estrarre manualmente le librerie nella cartella principale del file jar
  2. usa un IDE come Netbeans e inserisci una regola nella sezione post-jar di nbproject / build-impl.xml per estrarre le librerie all'interno del jar. Vedi sotto.
<target name="-post-jar">
        <!-- Empty placeholder for easier customization. -->
        <!-- You can override this target in the ../build.xml file. -->
  <jar jarfile="${dist.jar}" update="true">  
            <zipfileset src="${dist.jar}" includes="**/*.class" />  
            <zipfileset src="${file.reference.iText-1.0.8.jar}" includes="**/*"/>
      <zipfileset src="${file.reference.itextpdf-3.2.1.jar}" includes="**/*"/>
  </jar>
    </target>

i nomi file.reference si trovano all'interno del file project.properties dopo aver aggiunto le librerie all'IDE Netbeans.


9

Spesso vorrai specificare un manifest, in questo modo:

jar -cvfm myJar.jar myManifest.txt myApp.class

Che dice: "crea verbose jarFilename manifestFilename", seguito dai file che desideri includere. Verbose significa stampare messaggi su ciò che sta facendo.

Nota che il nome del file manifest che fornisci può essere qualsiasi cosa, poiché jarlo rinominerà automaticamente e lo metterà nella directory corretta all'interno del file jar.


6

Questo può essere fatto senza terminale, direttamente da IDE. Netbeans, per esempio.

  1. Crea un progetto separato con i pacchetti (Crea progetto - Java - Libreria di classi Java).
  2. Metti lì le tue classi .java.
  3. Costruisci questo progetto.
  4. Vai alla cartella del tuo progetto e trova lì le cartelle build e dist.
  5. Trova il file .jar nella cartella dist.
  6. Ottieni l'altro tuo progetto e aggiungi questo file .jar alle librerie del progetto.
  7. È ora possibile fare riferimento alle classi da questa libreria e ai suoi metodi direttamente dal codice, se l'importazione viene eseguita automaticamente.

3

Ecco un altro modo elegante per farlo:

$ ls | grep .java | xargs -I {} javac {} ; jar -cf myJar.jar *.class

Che prenderà tutti i file .java ( ls | grep .java) dalla tua directory corrente e li compilerà in .class ( xargs -I {} javac {}), quindi creerà il file jar dalle classi precedentemente compilate ( jar -cf myJar.jar *.class).


2

Forse il modo più adatto ai principianti per compilare un JAR dal tuo codice Java è usare un IDE (ambiente di sviluppo integrato; essenzialmente solo software user-friendly per lo sviluppo) come Netbeans o Eclipse.

  • Installa e configura un IDE. Ecco l'ultima versione di Eclipse .
  • Crea un progetto nel tuo IDE e metti i tuoi file Java all'interno della cartella del progetto.
  • Seleziona il progetto nell'IDE ed esporta il progetto come JAR. Controlla che i file java appropriati siano selezionati durante l'esportazione.

Puoi sempre fare tutto questo molto facilmente con la riga di comando. Assicurati di essere nella stessa directory dei file di destinazione prima di eseguire un comando come questo:

javac YourApp.java
jar -cf YourJar.jar YourApp.class

... cambiando "YourApp" e "YourJar" rispettivamente con i nomi propri dei file.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.