2011-12-11 12 views
7

Ho un file .jar chiamato myfile.jar. All'interno di questo file jar c'è una cartella chiamata images. All'interno di questa cartella chiamata immagini, ho un'immagine chiamata hi.png. Voglio aggiornare quell'immagine con una nuova versione di quell'immagine, che è anche chiamata hi.png. Non voglio estrarre tutti i file dal file jar singolo e quindi riconfezionarli, voglio solo aggiornare l'immagine. Così, vado a riga di comando, come al solito, digitare alcune righe di codice, e quindi faccio questo comando:Come aggiornare un file in un jar senza riconfezionare l'intero jar?

jar uf myfile.jar -C images hi.png 

quello che speravo a che fare con quel comando è stato quello di sostituire il vecchio con il nuovo hi.png hi.png. Ma, mi dà questo errore:

images\hi.png : no such file or directory 

Cosa devo fare per risolvere questo problema?

Ulteriori informazioni: Non riesco a utilizzare qualcosa come WinRAR, devo farlo con la riga di comando.

+0

** ** jar file sono anche ** ** zip file, in modo che la funzione imballato [strumento zip] (http://linux.about.com/ od/commands/l/blcmdl1_zip.htm) può operare su di essi. Se hai qualcosa che non è Windows, dovresti averlo già installato. (Penso che MacOS dovrebbe averlo, ma non posso verificarlo.) – FakeRainBrigand

+0

Non sai quale sia il tuo progetto qui ... ma 7Zip ha un ottimo supporto per la riga di comando. Basta fare attenzione, la specifica del barattolo è schizzinosa sull'esatto tipo di zip. In secondo luogo, potresti probabilmente usare un vaso espanso se questo è basato sul web. E ... se non è basato sul web (singolo client), perché non caricare l'immagine da ./images/hi.png. TL; DR; Fallo nel modo più semplice, se stai scambiando su un filesystem usa il filesystem. –

+0

In che directory stai facendo questo in (e dove sono le immagini e hi.png rispetto al tuo cwd)? –

risposta

19

-C sta cambiando la directory locale e sta cercando hi.png lì. Non sta controllando dove stai cercando di iniettarlo nel file JAR.

Vorrei provare a fare una nuova directory denominata images, spostando il locale hi.png in quella, facendo images una directory figlio della directory corrente, poi basta eseguire questo:

jar uf myfile.jar images\hi.png 
+0

Mi dà ancora quell'immagine di errore \ hi.png: nessun file o directory –

+1

Prova immagini/hi.png. – joev

+0

L'ho appena testato e funziona come previsto. Assicurati che la tua directory di lavoro sia la directory contenente "immagini". Puoi mostrare un'esportazione del tuo prompt dei comandi che mostra la struttura della directory e i comandi esatti che stai tentando? – ziesemer

2

Se si voleva modificare un file di testo, avresti potuto farlo direttamente con vim.

(Supponendo di avere a disposizione unzip, per esempio yum install -y unzip su CentOS)

vim my.jar

+0

Un file .jar non è un file di testo. – EJP

5

Il modo più semplice per farlo è usare 7-Zip software. Per

  1. Editing un file:

    • Aprire il file jar 7-zip | apri archivio
    • vai al file ad es. /Meta-Inf/xyz.conf
    • tasto destro del mouse e selezionare 'aperta all'interno' opzione
    • modificare il file e salvare il file
    • chiudere la console 7-zip ed è fatta.
  2. Per l'aggiunta/sostituzione/rimozione un file.

    • Seguire i primi due passaggi fino a raggiungere la cartella desiderata.
    • Rimozione: cancellare il file
    • Aggiunta: Trascinare e rilasciare il file alla console 7-zip.
    • chiudere la console ed è fatto.
1

è possibile utilizzare jar -uf sample.jar [path in jar file]target-file