2013-08-09 3 views
26

Ho uno strutture di cartelleCome creare un file jar con la struttura del pacchetto?

/com/cdy/ws/a.class files 
/com/cdy/ws/b.class files 
/com/cdy/ws/c.class files 

Quando eseguo il seguente comando “jar cvf asd.jar * .class” dà vaso con tutti i file di classe. Ma la struttura della cartella non viene generata. Tutti i file di classe devono trovarsi in "com.cdy/ws" ma tutte le classi si trovano nello stesso livello di META-INF. Qualcuno può dirmi qual è il comando per generare la struttura del pacchetto?

Grazie

risposta

55

è necessario iniziare a creare il JAR alla radice dei file.

Così, per esempio:

jar cvf program.jar -C path/to/classes . 

Ciò presuppone che path/to/classes contiene la directory com.

FYI, in questi giorni è relativamente raro per la maggior parte delle persone di utilizzare il comando jar direttamente, in quanto saranno utilizzare uno strumento di creazione come Ant o Maven per prendersi cura di questo (e di altri aspetti della compilazione). Vale la pena di consentire a uno di questi strumenti di occuparsi di tutti gli aspetti della build, ed è ancora più facile con un buon IDE aiutare a scrivere build.xml (Ant) o pom.xml (Maven).

+13

Inizialmente ero confuso da questa risposta. Renderlo un po 'più concreto può aiutare gli altri: se i file di classe sono in folder1/folder2/folder3/com/example/test, e vuoi che la struttura del pacchetto sia com.example.test, il comando dovrebbe essere 'jar cvf program.jar -C folder1/folder2/folder3 .' (Il periodo fa parte del comando, ovviamente.) – hBrent

+0

@Adam Batkin Per favore potresti aiutarmi a costruire un jar da questo codice di souce https://github.com/upictec /org.json.me Ho provato le tue istruzioni. Ho persino installato Maven, ma non riesco ancora a ottenere il jar: S – eddy

+0

@eddy Il tuo progetto crea un JAR come target/json-1.0.jar - ma non riuscivo a farlo funzionare a meno che non avessi rimosso l'intero ' 'coppia di tag e tutto ciò che li contiene –

9

Volete

$ jar cvf asd.jar . 

per specificare la directory (ad esempio .) per jar da. Ciò manterrà la struttura delle cartelle all'interno del file jar.

7

Dalla directory che contiene la cartella com:

$ jar cvf asd.jar com 
added manifest 
adding: com/(in = 0) (out= 0)(stored 0%) 
adding: com/cdy/(in = 0) (out= 0)(stored 0%) 
adding: com/cdy/ws/(in = 0) (out= 0)(stored 0%) 
adding: com/cdy/ws/a.class(in = 0) (out= 0)(stored 0%) 
adding: com/cdy/ws/b.class(in = 0) (out= 0)(stored 0%) 
adding: com/cdy/ws/c.class(in = 0) (out= 0)(stored 0%) 

$ jar -tf asd.jar 
META-INF/ 
META-INF/MANIFEST.MF 
com/ 
com/cdy/ 
com/cdy/ws/ 
com/cdy/ws/a.class 
com/cdy/ws/b.class 
com/cdy/ws/c.class 
+1

Thanks .. ho avuto la struttura del pacchetto dopo l'esecuzione del comando precedente :) – user2532663

+0

@ Daniel prega potresti aiutarmi a costruire un barattolo da questo codice souce github.com/upictec/org.json.me Ho provato le tue istruzioni. Ho persino installato Maven, ma non riesco ancora a ottenere il barattolo: S – eddy

2

questo codice muggito mi ha dato la risposta corretta

jar cvf MyJar.jar *.properties lib/*.jar -C bin . 

ha aggiunto il file (log4j) proprietà, ha aggiunto i file jar in lib. e poi è andato all'interno del cestino per recuperare i file di classe con il pacchetto.

7

Passaggio 1: Vai alla directory in cui sono mantenute le classi utilizzando il prompt dei comandi (o prompt della shell Linux)
Come per Progetto.
C:/workspace/MyProj/bin/classess/com/test/*.class

Vai bin utilizzando il comando:

cd C:/workspace/MyProj/bin 

Fase 2: per generare file jar Utilizzare sotto comando.

jar cvf helloworld.jar com\test\hello\Hello.class com\test\orld\HelloWorld.class 

Utilizzando il comando precedente le classi verranno posizionate in un jar in una struttura di directory.

2

La cartella specificata Nome deve essere su C:\Program Files\Java\jdk1.7.0_02\bin percorso Nome di cartella con file di classe.

C:\Program Files\Java\jdk1.7.0_02\bin>jar cvf program1.jar Foldername 

Ora program1.jar creerà in C: \ Program Files \ Java \ jdk1.7.0_02 \ percorso bin

0

Semplicemente più sopra -

  1. Mantenere i contenuti imballaggio Java all'interno di una directory e assicurarsi che non ci sia nulla all'interno tranne i pacchetti Java e le corrispondenti classi Java.

  2. Comando Open (Se Windows) Prompt, portata al percorso di directory che contiene come qui di seguito -

    C:>cd "C: \ Users \ UserABC \ Download \ Current Folder"

    C : \ Users \ UserABC \ Download \ cartella corrente>jar cvf hello-world-1.0.1.jar .

0

per evitare di aggiungere file sorgenti .java al vostro pacchetto si dovrebbe fare

cd src/ 
jar cvf mylib.jar com/**/*.class 

suppone che la struttura del progetto era come

myproject/ 
    src/ 
     com/ 
     mycompany/ 
      mainClass.java 
      mainClass.class